-1
var x,y:real;
begin
    x:=123.456;
    y:=frac(x);
    write(y);
end.

В результате выводит 0.456000000000003.

Harry
  • 221,325
  • 1
    А вопрос в чём? Пока что я вижу только суждение про некорректную работу стандартной функции, которое никак не учитывает специфику хранения вещественных чисел. – Regent Feb 18 '17 at 14:16
  • http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374 – Anton Shchyrov Feb 18 '17 at 14:47

1 Answers1

0

Здесь нет никакой ошибки. Просто сам способ хранения действительных чисел основан на сумме дробей вида 1/2n, ну, а ваше 0.456 - это не 0.5, его красиво не разложишь :)

Выводите с меньшим количеством знаков, и все будет красиво :)

Harry
  • 221,325