3
我做了一些改裝的一個流行的遊戲(我的世界),我看到了這些線路中的地形生成,Java的雙精度數學
double d4 = 1.0D;
d4 *= d4;
d4 *= d4;
d4 = 1.0D - d4;
double d5 = (noise1[l1] + 256D)/512D;
d5 *= d4;
我想知道什麼的d4
的一點是,因爲在第四行,它總是0,不是嗎?
我做了一些改裝的一個流行的遊戲(我的世界),我看到了這些線路中的地形生成,Java的雙精度數學
double d4 = 1.0D;
d4 *= d4;
d4 *= d4;
d4 = 1.0D - d4;
double d5 = (noise1[l1] + 256D)/512D;
d5 *= d4;
我想知道什麼的d4
的一點是,因爲在第四行,它總是0,不是嗎?
是的,直的Java至少這將保證爲0
對於本身就可以精確表示浮動小數點運算,1.0的所有不準確,並通過自身相乘的結果將始終回到簡單的1.0。
你確定其他地方沒有別的東西可以讓它略微不同於1.0d?或者,也許這在歷史上是0.1以外的價值?
@pst:不,1.0d * 1.0d * *正好是* 1.0d,因爲1.0d在二進制浮點中可以精確表示。 (與0.1d相比,哪個*不是精確表示的。) –
@pst:爲什麼1.0 * 1.0在浮點數學中不是1.0? –
根據此代碼,yes和d5也將爲零。 – CoolBeans