Java双精度小数点之间的计算

Java双精度小数点之间的计算,java,double,Java,Double,但blueJ的答案是: 有人知道发生了什么吗?这是关于双级还是blueJ的问题?这仅仅是因为。您始终可以使用printf之类的工具格式化输出: 1.0 0.6 0.48 0.0 0.4 0.48 0.0 0.0 0.04000000000000001 0.04000000000000001 0.04 请参阅Oracle教程。这是因为浮点运算是如何工作的。试着看一些细节。基本上,使用普通浮点表示法不可能在有限个二进制数字中表示任意十进制数 如果您需要您的算术与小数紧密匹配,请使用 通

但blueJ的答案是:

有人知道发生了什么吗?这是关于双级还是blueJ的问题?

这仅仅是因为。您始终可以使用printf之类的工具格式化输出:

1.0 0.6 0.48  
0.0 0.4 0.48  
0.0 0.0 0.04000000000000001  
0.04000000000000001 0.04
请参阅Oracle教程。

这是因为浮点运算是如何工作的。试着看一些细节。基本上,使用普通浮点表示法不可能在有限个二进制数字中表示任意十进制数

如果您需要您的算术与小数紧密匹配,请使用


通常,您可以通过将输出到屏幕的结果四舍五入等方式忽略这些错误。

如果我想将结果保存回数组,该怎么办?@user330184然后您可以正常保存它。格式仅用于将实际双精度转换为可视表示;这与双重价值本身无关。
1.0 0.6 0.48  
0.0 0.4 0.48  
0.0 0.0 0.04
1.0 0.6 0.48  
0.0 0.4 0.48  
0.0 0.0 0.04000000000000001  
double d = 0.04000000000000001;
System.out.println(d);
System.out.printf("%.2f%n", d);
0.04000000000000001 0.04