BigDecimal 类型相加
时间: 2023-10-17 18:35:32 浏览: 111
程序中两个Double类型相加出现误差的解决办法
在Java中,当使用BigDecimal类型进行相加操作时,需要注意以下几点。首先,要确保在实例化BigDecimal对象时传入的参数是字符串或整型数字,而不是浮点型数字。这是因为浮点型数字会导致精度问题。例如,如果传入浮点型数字0.59进行相加,结果可能会变为0.58999999999999996891375531049561686813831329345703125,而不是0.59。因此,最好传入字符串或整型数字,如new BigDecimal("0.59")。
其次,当使用add方法进行相加操作时,需要将相加的结果重新赋值给原来的BigDecimal对象,而不是直接调用add方法得到结果。这是因为BigDecimal类的对象是不可变的,每次进行运算都会返回一个新的BigDecimal对象。所以需要将结果重新赋值给原来的对象,如totalAmount = totalAmount.add(new BigDecimal("0.59"))。
综上所述,正确的BigDecimal类型相加的写法如下:
BigDecimal totalAmount = new BigDecimal("0");
totalAmount = totalAmount.add(new BigDecimal("0.59"));
System.out.println(totalAmount);
这样可以确保相加操作的精确性,并得到正确的结果0.59。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Java的数字精确计算问题-BigDecimal](https://download.csdn.net/download/weixin_38684328/13758572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [BigDecimal的相加问题](https://blog.csdn.net/qq_40126996/article/details/105497525)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [JAVA BigDecimal的相加](https://blog.csdn.net/somebodydie/article/details/8918622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文