Если в переменную X типа real записать число например 4.0, потом сделать Trunc(X), то возвращается число 3. Почему? Может у меня глюк.
volvo
4.12.2005 23:22
Игорь, дело в представлении вещественных чисел. Число, хранимое в переменной вещественного типа НЕ может быть идеально равно 4.0 ... Оно может быть равно 3.999999999, а может 4.000000001
Вот в первом случае у тебя Trunc вернет 3, а во втором 4...
Игорь К
5.12.2005 2:06
Ну и как быть?
volvo
5.12.2005 2:13
Подключай сопроцессорные типы, и будет тебе счастье ... Твоя же программа:
{$N+} program tryTrunc; var x : double; var y : integer; begin x:=4.2; x:= frac(x)*10; y := trunc(x); end.
Проверяй.
Игорь К
5.12.2005 2:48
Я перед Trunc сделал Round. Вроде все заработало.
Попробовал твой код. Ругается. Говорит Must be in 8087 mode to compile this
Игорь К
5.12.2005 2:49
Все равно спасибо за совет
volvo
5.12.2005 2:49
Игорь К, я не просто так
{$N+}
добавил... Первой строкой вставь в программу и все пойдет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.