Текущий архив: 2004.05.23;
Скачать: CL | DM;
ВнизИспользование типа Extended Найти похожие ветки
← →
Zoom82 (2004-05-06 15:45) [0]Доброго времени суток!
Вопрос связан с испольованием типа extended и его корректным отображением, необходимо вывести результат слудещего выражения:
1-(1,5E-19), т.е. вычесть из единицы число с 19 нулями после запятой.
Я пытался использовать вывод через FloatToStrF(1-(1,5E-19),ffExponent,18,2), но в результате выдаётся единица, хотя должно получиться число близкое к единице, но всё же не единица!
Если кто знает решение, буду признателен за помощь.
← →
div © (2004-05-06 16:51) [1]в типе extended значащих разрядов 19-20. а у тебя 19 нулей только после запятой. фактически ты из единицы вычитаешь ноль (так процессор понимает твое число).
← →
WebErr © (2004-05-06 17:02) [2]1) 1,5e-19 - здесь будет 18 нулей после запятой!
2) По умолчанию не Extended, а Real = Double, если не указано обратное (что Real=Real48).
3) Попробуйте сначала привести 1,5e-19 к типу Extended, а потом уже работать с этим числом, если Вам нужен именно Extended. Т.е.1 - Extended(1,5e-19)
← →
div © (2004-05-06 17:04) [3]2 WebErr ©
даже если и 18 - это ничего не меняет... его значащие цифры ЗА пределами...
← →
WebErr © (2004-05-06 17:08) [4]Попробуйте:
a:=0.9;
b:=0.8;
c:=0.1;
d:=1e36;
t:=(a-b-c)*d;
writeln(t);
В консольно приложении либо writeln в файл.
:)
Предел - математическое понятие, и он как известно не достижим! ;)
← →
Григорьев Антон (2004-05-06 17:50) [5]Вы наткнулись на то, что называется машинным эпсилон. Подробности в этой статье: http://www.delphikingdom.com/helloworld/reals.htm
← →
Zoom82 (2004-05-06 20:56) [6]Огромное спасибо всем за ответы!
Я нашёл такой выход - посчитать это число в стандартном виндовском калькуляторе. :)
Страницы: 1 вся ветка
Текущий архив: 2004.05.23;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.034 c