Простая программа: при x<=-0.6 выбираем одну из веток в операторе If. Проблема заключается в том, что Паскаль не дает точного значения 0.6, а дает 0.59999999998, посему в точке 0.6 значение вычисляется не точно. Знаю, что это как-то обходится, даже когда-то на Си я это использовал, но вот как это сделать на Паскале...?
Подскажите, плз
Определение ветки для If
Модератор: Модераторы
-
Mikhail235
- незнакомец
- Сообщения: 4
- Зарегистрирован: 06.01.2013 17:56:40
Вариантов несколько.
1) использовать тип "пошире", extended.
2) вместо 0.6 использовать 0.6+eps, где eps -- минимальное число, которое можно прибавить к 0.6 так, что его значение изменится. Подробнее см. в этой теме: viewtopic.php?f=23&t=8717
1) использовать тип "пошире", extended.
2) вместо 0.6 использовать 0.6+eps, где eps -- минимальное число, которое можно прибавить к 0.6 так, что его значение изменится. Подробнее см. в этой теме: viewtopic.php?f=23&t=8717
-
Mikhail235
- незнакомец
- Сообщения: 4
- Зарегистрирован: 06.01.2013 17:56:40
Спасибо. Помогло изменение типа на extended
Вообще, напишите функцию сравнения дробных чисел, где третьим параметров передавайте точность.
stikriz писал(а):напишите функцию сравнения дробных чисел
Зачем? В учебных целях?
Я считаю, такие советы нужно давать обязательно с оговоркой --
"сейчас напиши, но вообще-то, конечно, следует пользоваться стандартной функцией".
Иначе у обучаемого сформируется вредная привычка изобретать велосипед
Ask писал(а):следует пользоваться стандартной функцией
Позволите поинтересоваться именем стандартной функции, подходящей случаю?
CompareValue из модуля math
