GameHunter писал(а):
Вот модуль:
Код:
<* MAIN + *>
<* NOOPTIMIZE + *>
MODULE Main;
IMPORT
SLongIO;
CONST
c = 1/3;
VAR
n:LONGINT;
x,y:LONGREAL;
BEGIN
x:=1;
n:=1;
y:=n*c*x;
SLongIO.WriteReal(y,0);
END Main.
На экране должно печататься 1/3 с двойной точночтью. Но печатается только с одинарной. Баг присутствует только при включённой опции NOOPTIMIZE.
y:=x*n*c;
В таком варианте печатает результат с двойной точностью. Видимо, точность результата определяется по первому сомножителю, если вычисление идет слева направо. Имхо.