Математика двойной точности Java - PullRequest
3 голосов
/ 02 сентября 2011

Я занимаюсь моддингом в популярной игре (Minecraft), и я видел эти линии в поколении ландшафта,

double d4 = 1.0D;
d4 *= d4; 
d4 *= d4;
d4 = 1.0D - d4;
double d5 = (noise1[l1] + 256D) / 512D;
d5 *= d4;

Мне было интересно, в чем смысл d4, потому чтона четвертой строке всегда будет 0, не так ли?

1 Ответ

5 голосов
/ 02 сентября 2011

Да, в прямой Java, по крайней мере, это будет гарантировано равным 0.

При всех неточностях арифметики с двоичной точкой сама 1.0 может быть точно представлена, и результат ее умножения сам по себе будетвсегда возвращайтесь просто к 1.0.

Вы уверены, что больше ничего не происходит, чтобы сделать его слегка отличным от 1.0d?Или, возможно, это было исторически какое-то значение, отличное от 0,1?

...