Java双精度数学

TJ *_*ksa 3 java double

我正在对一款流行游戏(Minecraft)进行一些修改,我在地形生成中看到了这些线条,

double d4 = 1.0D;
d4 *= d4; 
d4 *= d4;
d4 = 1.0D - d4;
double d5 = (noise1[l1] + 256D) / 512D;
d5 *= d4;
Run Code Online (Sandbox Code Playgroud)

我想知道重点是什么d4,因为在第四行它总是0,不是吗?

Jon*_*eet 5

是的,在直接Java中,至少这将保证为0.

对于浮动二进制点算术的所有不准确性,1.0本身可以精确表示,并且将其自身相乘的结果将总是回到1.0.

你确定在其他地方没有别的东西可以让它与1.0d 略有不同吗?或者也许它历史上除了0.1之外还有一些其他价值?