调试了一段代码并发现了这个奇怪的问题。
在添加两个双变量0.0040和0.0005时,Java将结果返回为“0.0045000000000000005”
这是我的代码: -
public static void main(String[] args) {
double a = 0.0040 ;
double b = 0.0005;
double result = a+b ;
System.out.println(result);
}
输出:0.0045000000000000005
如果变量“a”的值在0.0041到0.0044之间,则输出正确。但是,如果我将变量“a”的值赋予0.0045,则输出为“0.004999999999999999”。
需要帮助!!
答案 0 :(得分:3)
您可以使用BigDecimal
在Java中执行精确的浮点运算。
以下是一个例子:
BigDecimal a = new BigDecimal("0.0040");
BigDecimal b = new BigDecimal("0.0005");
BigDecimal sum = a.add(b);
另请注意,BigDecimal
和BigInteger
(整数相同)是不可变的。
答案 1 :(得分:2)
这是因为浮点数,它们会失去精确度并导致您看到的问题。而是使用BigDecimal进行精确度