Anscheinend wird das Round() wegoptimiert... und die Optimierung ist fehlerhaft.indianer-frank hat geschrieben: Literale werden anders als Variable behandelt
-Michael
Anscheinend wird das Round() wegoptimiert... und die Optimierung ist fehlerhaft.indianer-frank hat geschrieben: Literale werden anders als Variable behandelt
Wäre natürlich hübsch, das auch noch zu testen...siro hat geschrieben:Man konnte früher sogar in den Optionen einstellen ob der Coprozessor benutzt werden soll oder die Emulation,
ich weis garnicht ob die Rundungsergebnisse dann unterschiedlich waren. Habe leider kein Turbo Pascal mehr.
Keine Unterschiede bei {$n+,e-} (bis auf die Tatsache das TP4 kein {$e-} kennt)mschnell hat geschrieben:Wäre natürlich hübsch, das auch noch zu testen...siro hat geschrieben:Man konnte früher sogar in den Optionen einstellen ob der Coprozessor benutzt werden soll oder die Emulation,
ich weis garnicht ob die Rundungsergebnisse dann unterschiedlich waren. Habe leider kein Turbo Pascal mehr.
-Michael
Code: Alles auswählen
D:\DMX\TP4>TPC.EXE T_RND.PAS
Turbo Pascal Version 4.0 Copyright (c) 1987 Borland International
T_RND.PAS(1): Error 17: Invalid compiler directive.
{$N+,E-}
^
Code: Alles auswählen
D:\DMX\TP4>TPC.EXE T_RND.PAS
Turbo Pascal Version 4.0 Copyright (c) 1987 Borland International
T_RND.PAS(19): Error 116: Must be in 8087 mode to compile this.
x := 0.5; l:= round(x); writeln(l);
^
Code: Alles auswählen
var
f: single;
begin
f := 4.5;
WriteLn(f: 4: 0); // 5
WriteLn(Round(f)); // 4
f := 5.5;
WriteLn(f: 4: 0); // 6
WriteLn(Round(f)); // 6