DBL_MAX в MSVC++6.0
От: e-smirnov  
Дата: 05.02.04 11:18
Оценка:
Здравствуйте,

почему не срабатывает if, а срабатывает else?

#define DBL_MAX 1.7976931348623158e+308 /* max value */ // находится во <float.h>

if ((DBL_MAX) > ((DBL_MAX) — 0.0000001))
;
else
;

так тоже не работает:

if ((DBL_MAX) > ((DBL_MAX) — (1.0e-7)))
;
else
;

Спасибо!
Re: DBL_MAX в MSVC++6.0
От: alnsn Великобритания http://nasonov.blogspot.com
Дата: 05.02.04 12:26
Оценка:
e-smirnov wrote:

> Здравствуйте,

>
> почему не срабатывает if, а срабатывает else?
>
> #define DBL_MAX 1.7976931348623158e+308 /* max value */ //
> #находится во <float.h>
>
> if ((DBL_MAX) > ((DBL_MAX) — 0.0000001))
> ;
> else
> ;
Как может поместиться 308+7 десятичных цифр в sizeof(double) байт?
попробуй сделать цикл, умножая каждый раз 0.0000001 на 10 и посмотри, когда
начнется if, а не else. Начнется наверно где-то в районе 1.0e292
--
Александр Насонов,
Независимый консультант и разработчик ПО
alnsn-mycop@yandex.ru (для более быстрого ответа удалите -мусор из адреса)
Posted via RSDN NNTP Server 1.8 beta
Re: DBL_MAX в MSVC++6.0
От: Vamp Россия  
Дата: 05.02.04 12:27
Оценка:
Потому, что на таком удалении от 0 epsilon-окрестность имеет охренительные размеры . DBL_MAX и DBL_MAX-1 — это одно и то же число.
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.