java中的错误计算
当我试图得到14.99+1.5和15.99+1.5的答案时,我的程序给了我意想不到的不同输出。有什么原因吗 以下是我的简单程序:java中的错误计算,java,math,sum,double,Java,Math,Sum,Double,当我试图得到14.99+1.5和15.99+1.5的答案时,我的程序给了我意想不到的不同输出。有什么原因吗 以下是我的简单程序: class Demo { public static void main(String[] args) { System.out.println(12.99 + 1.5); System.out.println(13.99 + 1.5); System.out.pri
class Demo {
public static void main(String[] args) {
System.out.println(12.99 + 1.5);
System.out.println(13.99 + 1.5);
System.out.println(14.99 + 1.5);
System.out.println(15.99 + 1.5);
System.out.println(16.99 + 1.5);
}
}
以下是输出:
我的JDK版本:1.7.025
我的程序给了我错误的输出
这是double的正确输出,只是不是您所期望的
浮点近似于它不能准确表示的值。在这种情况下,1.5精确地表示为两个2^0+2^-1的和或幂,但需要近似表示为12.99。打印浮点numebr时,它知道该数字是近似值,需要四舍五入到最简单的数字,即14.49恰好符合您的预期。14.99+1.5的值有点太小,您会看到表示错误,即取消了精确值的错觉
当您使用浮点运算时,您还需要提供预期的舍入值,并且您将在一定范围内得到预期的结果。舍入时,非常大的数字仍然是错误的,因为double的精度有限
System.out.printf("%.2f%n", 12.99 + 1.5);
System.out.printf("%.2f%n", 13.99 + 1.5);
System.out.printf("%.2f%n", 14.99 + 1.5);
System.out.printf("%.2f%n", 15.99 + 1.5);
System.out.printf("%.2f%n", 16.99 + 1.5);
印刷品
14.49
15.49
16.49
17.49
18.49
不出所料。@Down选民关心说什么吗?严重地降低投票率??如果我知道原因,我不会问这个问题,这是我第一次体验这种输出。事实上,我不知道已经有同样的问题了,它的标题和我的完全不同。因此,在寻找解决方案时,我看不到这个问题。谢谢你的理解。。