Страница 1 из 1

Определение ветки для If

СообщениеДобавлено: 06.01.2013 18:04:08
Mikhail235
Простая программа: при x<=-0.6 выбираем одну из веток в операторе If. Проблема заключается в том, что Паскаль не дает точного значения 0.6, а дает 0.59999999998, посему в точке 0.6 значение вычисляется не точно. Знаю, что это как-то обходится, даже когда-то на Си я это использовал, но вот как это сделать на Паскале...?
Подскажите, плз

Re: Определение ветки для If

СообщениеДобавлено: 06.01.2013 18:15:02
bormant
Вариантов несколько.
1) использовать тип "пошире", extended.
2) вместо 0.6 использовать 0.6+eps, где eps -- минимальное число, которое можно прибавить к 0.6 так, что его значение изменится. Подробнее см. в этой теме: viewtopic.php?f=23&t=8717

Re: Определение ветки для If

СообщениеДобавлено: 06.01.2013 20:57:47
Mikhail235
Спасибо. Помогло изменение типа на extended

Re: Определение ветки для If

СообщениеДобавлено: 07.01.2013 01:09:56
stikriz
Вообще, напишите функцию сравнения дробных чисел, где третьим параметров передавайте точность.

Re: Определение ветки для If

СообщениеДобавлено: 07.01.2013 03:05:48
Ask
stikriz писал(а):напишите функцию сравнения дробных чисел

Зачем? В учебных целях?
Я считаю, такие советы нужно давать обязательно с оговоркой --
"сейчас напиши, но вообще-то, конечно, следует пользоваться стандартной функцией".
Иначе у обучаемого сформируется вредная привычка изобретать велосипед :)

Re: Определение ветки для If

СообщениеДобавлено: 07.01.2013 19:44:42
bormant
Ask писал(а):следует пользоваться стандартной функцией

Позволите поинтересоваться именем стандартной функции, подходящей случаю?

Re: Определение ветки для If

СообщениеДобавлено: 07.01.2013 22:14:00
stikriz
CompareValue из модуля math