Frac в паскале
Автор Владимир Азупак задал вопрос в разделе Другие языки и технологии
Паскаль. Применение функции Frac : Почему 4.02/0.004=1005 (выводит сама программа, без всякой дробной части) , но нецелое и получил лучший ответ
Ответ от Капитан Гугл[гуру]
Все вычисления с плавающей запятой имеют определенную точность, поэтому нельзя сравнивать числа типа real обычным = (кроме тех случаев, когда нужно проверить точное равенство - например, скопировано ли число) ; надо делать так:
var eps;{погрешность обычно обозначают греческой буквой ε - эпсилон}
...
eps:=0.0001;
...
if abs(frac(n/b))< eps then ...
Ian
Мыслитель
(8645)
извиняюсь, но 2 и 0.5 легко представимы в двоичной системе, в отличие от 4.02 и 0.0004
Ответ от Ian[гуру]
Капитан прав, попробуй вывести еще строку writeln (frac(a/b)) - увидишь, что дробная часть ненулевая.
невозможно представить все десятичные числа с абсолютной точностью в двоичной системе.
Капитан прав, попробуй вывести еще строку writeln (frac(a/b)) - увидишь, что дробная часть ненулевая.
невозможно представить все десятичные числа с абсолютной точностью в двоичной системе.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Паскаль. Применение функции Frac : Почему 4.02/0.004=1005 (выводит сама программа, без всякой дробной части) , но нецелое