我正在编写一个程序,其中我必须重复乘以两个 BigDecimal
。
第 27 次迭代后,我得到:
0.905225895893387921845435055445776361046057346344145563957027726
使用此数字进行任何进一步计算(BigDecimal * 0.182365681285)
都会导致尾随零。所以下一次迭代返回:
0.905225895893387921845435055445776361046057346344145563957027726000000000000
之后的迭代返回:
0.9052258958933879218454350554457763610460573463441455639570277260000000000000000000000000
等等..
<小时/>所以我想知道这是否是由于 BigDecimal
的一些精度问题造成的。
感谢任何帮助
编辑:我被要求发布我的代码。我可以复制粘贴我拥有的几页,但这是我迄今为止所拥有内容的非常准确的表示:
BigDecimal range = new BigDecimal(0.0012440624293146346);
for(int i = 0; i < 50 ; i++){
low = low.multiply(range);
}
最佳答案
乘法方法创建一个 BigDecimal,其小数位数等于第一个操作数的小数位数 + 第二个操作数的小数位数,即使这会导致尾随零。要去除尾随零,请使用... stripTrailingZeros() .
关于java - BigDecimal 精度问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15455862/