Помощь - Поиск - Пользователи - Календарь
Полная версия: Выделение целой части из числа типа Real
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Игорь
Если в переменную X типа real записать число например 4.0, потом сделать Trunc(X), то возвращается число 3. Почему? Может у меня глюк.
volvo
Игорь,
дело в представлении вещественных чисел. Число, хранимое в переменной вещественного типа НЕ может быть идеально равно 4.0 ... Оно может быть равно 3.999999999, а может 4.000000001

Вот в первом случае у тебя Trunc вернет 3, а во втором 4...
Игорь К
Ну и как быть?
volvo
Подключай сопроцессорные типы, и будет тебе счастье ...
Твоя же программа:
{$N+}
program tryTrunc;
var x : double;
var y : integer;
begin
x:=4.2;
x:= frac(x)*10;
y := trunc(x);
end.

Проверяй. wink.gif
Игорь К
Я перед Trunc сделал Round. Вроде все заработало.

Попробовал твой код. Ругается. Говорит Must be in 8087 mode to compile this
Игорь К
Все равно спасибо за совет
volvo
Игорь К, я не просто так
{$N+}

добавил... Первой строкой вставь в программу и все пойдет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.