至少在Java中,如果我编写以下代码:
float a = 1000.0F;
float b = 0.00004F;
float c = a + b + b;
float d = b + b + a;
boolean e = c == d;
价值将。我认为这是由于以下事实造成的:在精确表示数字的方式中,浮点数非常有限。但我不明白为什么只是改变的位置可能会导致这种不平等。
我在第3行和第4行中将 s都减小为1,但是的值变为:
float a = 1000.0F;
float b = 0.00004F;
float c = a + b;
float d = b + a;
boolean e = c == d;
第三和第四行到底发生了什么?为什么带有浮点数的加法运算不关联?
提前致谢。
X
一个非常大的数字和Y
一个非常小的数字,例如X + Y = X
。在这里,X + Y + -X
将为零。但是X + -X + Y
会的Y
。