在Java中添加

时间:2015-02-16 13:50:04

标签: java math

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

在添加两个双变量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”。

需要帮助!!

2 个答案:

答案 0 :(得分:3)

您可以使用BigDecimal在Java中执行精确的浮点运算。

以下是一个例子:

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

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

答案 1 :(得分:2)

这是因为浮点数,它们会失去精确度并导致您看到的问题。而是使用BigDecimal进行精确度

相关问题