Ответ 1
Добавление очень маленького значения (величины) к очень большой (величине) делает: практически никакой разницы. В этом случае разница настолько мала, что не может быть представлена с точностью double
. В основном:
double.MinValue + (most things) === double.MinValue
Это не гарантирует возможность представления каждого double
между double.MinValue
и double.MaxValue
, и по мере увеличения величины абсолютное разрешение того, что может быть представлено, уменьшается.
Не забывайте: double.MinValue
имеет 308 цифр до десятичной точки. Вы меняете очень мало. Вы в основном делаете:
-179769313486232000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000 // yikes!
+ 999999999999999999
Имейте в виду, что double
имеет примерно 17 цифр точности; поэтому около 291 цифр этого огромного числа можно в значительной степени игнорировать.