关于数学:Java中的加法

Addition in Java

本问题已经有最佳答案,请猛点这里访问。

正在调试一段代码,发现了这个奇怪的问题。

在添加两个双变量0.0040和0.0005时,Java将结果返回为"0.00×45万亿"。

这是我的密码:

1
2
3
4
5
6
    public static void main(String[] args) {
    double a = 0.0040  ;
    double b = 0.0005;
    double result = a+b ;
    System.out.println(result);
}

产量:0.004500000000000005

如果变量"A"的值介于0.0041到0.0044之间,则输出正确。但是,如果我将变量"A"的值设为0.0045,则输出为"0.00499999999999"。

需要帮助!!


你可以用EDCOX1,0来完成Java中的浮点运算。

下面是一个例子:

1
2
3
BigDecimal a = new BigDecimal("0.0040");
BigDecimal b = new BigDecimal("0.0005");
BigDecimal sum = a.add(b);

还要注意,BigDecimalBigInteger(整数相同)是不可变的。


这是因为浮点数,它们会失去精度,导致您看到的问题。宁可使用bigdecimal作为精度