意外的小数结果



我运行以下代码,但没想到结果。

public class SampleDemo {
    public static void main(String args[]) {  
        System.out.println(10.00 - 9.10);
    }
}

我得到的 o/p 为 0.90000000000000004

为什么会这样?

这是因为十进制值不能用浮点数或双精度精确表示。

一个建议:在需要确切答案的地方避免使用浮点数和双精度。改用 BigDecimal、int 或 long


使用 int :

public class SampleDemo {
    public static void main(String args[]) {  
        System.out.println(10 - 9);
    }
}
// Output : 1

使用 BigDecimal :

import java.math.BigDecimal;
public class SampleDemo {
  public static void main(String args[]) {
     System.out.println(new BigDecimal("10.00").subtract(new BigDecimal("9.10")));
                             }
                     }
// Output : 0.90

相关内容

  • 没有找到相关文章

最新更新