mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-28 16:03:48 +02:00
50 lines
1.1 KiB
ObjectPascal
50 lines
1.1 KiB
ObjectPascal
{ Old file: tbs0218.pp }
|
|
{ rounding errors with write/str (the bugs is fixed, OK 0.99.11 (FK) }
|
|
|
|
Program Wrong_Output;
|
|
{}
|
|
Var r,rr,error:Extended;
|
|
s:String;
|
|
code : word;
|
|
{}
|
|
Begin
|
|
Writeln('Size of Extended type (r)=',SizeOf(r),' bytes');
|
|
r:=0.000058184639;
|
|
Writeln('r=',r);
|
|
Writeln('r=',r:16:13);
|
|
Writeln('r=',r:15:12);
|
|
Writeln('r=',r:14:11);
|
|
Writeln('r=',r:13:10);
|
|
Writeln('r=',r:12:9);
|
|
Writeln('r=',r:11:8);
|
|
Writeln('r=',r:10:7);
|
|
Writeln('r=',r:9:6);
|
|
Writeln('r=',r:8:5);
|
|
Writeln('r=',r:7:4);
|
|
Str(r,s);
|
|
Writeln('r=',s,' (as string)');
|
|
str(r,s);
|
|
val(s,rr,code);
|
|
{ calculate maximum possible precision }
|
|
if sizeof(extended) = 12 then
|
|
error := exp(17*ln(10))
|
|
else if sizeof(extended) = 10 then
|
|
error := exp(17*ln(10))
|
|
else if sizeof(extended) = 8 then
|
|
error := exp(14*ln(10))
|
|
else if sizeof(extended) = 4 then
|
|
{ the net may have to be 9 instead of 8, not sure }
|
|
error := exp(8*ln(10))
|
|
else
|
|
begin
|
|
Writeln('unknown extended type size!');
|
|
halt(1)
|
|
end;
|
|
if abs(r-rr) > error then
|
|
begin
|
|
Writeln('r=',r);
|
|
Writeln('is different from rr=',rr);
|
|
halt(1);
|
|
end;
|
|
End.
|