#delphi #math
If MinDouble > 0 Then // -> всегда True If MinDouble < 0 Then // -> всегда False ... И как с ним правильно сравнивать? Попробую подробнее объяснить суть вопроса: минимальное и максимальное возможное значение для того и нужно, чтобы определять границы диапазона. Для того и заведены эти константы. И то, что минимальное значение больше нуля это странно, т.к. отрицательные значения этому типу никто не запрещал присваивать. На практике получается все отрицательные числа меньше минимального значения, хотя на то оно и минимальное, чтобы меньше его ничего не было.
Ответы
Ответ 1
Заблуждение в том, что: в отличии от целых чисел, где минимальное - это наиболее отрицательное значение минимальное число типа Double (и аналогичных типов с "плавающей" точкой) - это минимальное отличное от нуля значение. Дело в том, что знак числа с точкой кодируется одним битом, и никак не влияет на минимальное / максимальное представляемые этим типом значения. Таким образом: MinDouble = 5.0e-324; Минимальное представимое число отличное от нуля MaxDouble = 1.7e+308; Максимальное представимое число отличное от нуля Положительное или отрицательное число - для этих констант не важно, вы сами добавляете знак как вам нужно. Например, используя 4 числа и знак, получаем вот такие диапазоны: [-MaxDouble .. -MinDouble] 0 [+MinDouble .. +MaxDouble] P.S. И Delphi тут не при чем, в других ЯП всё так же.Ответ 2
Потому что MinDouble определяет минимальное абсолютное значение типа double MinDouble = 5.0e-324;
Комментариев нет:
Отправить комментарий