gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gm2] bugs in ISO longreal -> array of char conversions.


From: rob solomon
Subject: [Gm2] bugs in ISO longreal -> array of char conversions.
Date: Fri, 11 Oct 2013 21:06:54 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0

The following program does not give correct results at all for LongStr.RealToEng, and when the longreal value is 0.01, several of the conversions give incorrect results.

MODULE TestRealsg2;

IMPORT LongStr, STextIO, SWholeIO;

VAR
  x,y,z                        : LONGREAL;
  FixedStr,FloatStr,EngStr,Str : ARRAY [0..25] OF CHAR;


BEGIN
  x := 100.0;
  y := 200.0;
  z := 0.1;

  STextIO.WriteString(' 100 : ');
  LongStr.RealToFloat(x,15,FloatStr);
  STextIO.WriteString(FloatStr);
  STextIO.WriteString(', ');
  LongStr.RealToEng(x,15,EngStr);
  STextIO.WriteString(EngStr);
  STextIO.WriteString(', ');
  LongStr.RealToFixed(x,15,FixedStr);
  STextIO.WriteString(FixedStr);
  STextIO.WriteString(', ');
  LongStr.RealToStr(x,Str);
  STextIO.WriteString(Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

  STextIO.WriteString(' 200 : ');
  LongStr.RealToFloat(y,15,FloatStr);
  STextIO.WriteString(FloatStr);
  STextIO.WriteString(', ');
  LongStr.RealToEng(y,15,EngStr);
  STextIO.WriteString(EngStr);
  STextIO.WriteString(', ');
  LongStr.RealToFixed(y,15,FixedStr);
  STextIO.WriteString(FixedStr);
  STextIO.WriteString(', ');
  LongStr.RealToStr(y,Str);
  STextIO.WriteString(Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

  STextIO.WriteString(' 0.1 : ');
  LongStr.RealToFloat(z,15,FloatStr);
  STextIO.WriteString(FloatStr);
  STextIO.WriteString(', ');
  LongStr.RealToEng(z,15,EngStr);
  STextIO.WriteString(EngStr);
  STextIO.WriteString(', ');
  LongStr.RealToFixed(z,15,FixedStr);
  STextIO.WriteString(FixedStr);
  STextIO.WriteString(', ');
  LongStr.RealToStr(z,Str);
  STextIO.WriteString(Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

  x := 0.01;
  y := 0.001;
  z := 0.0001;

  STextIO.WriteString(' .01 : ');
  LongStr.RealToFloat(x,15,FloatStr);
  STextIO.WriteString(FloatStr);
  STextIO.WriteString(', ');
  LongStr.RealToEng(x,15,EngStr);
  STextIO.WriteString(EngStr);
  STextIO.WriteString(', ');
  LongStr.RealToFixed(x,15,FixedStr);
  STextIO.WriteString(FixedStr);
  STextIO.WriteString(', ');
  LongStr.RealToStr(x,Str);
  STextIO.WriteString(Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

  STextIO.WriteString(' .001 : ');
  LongStr.RealToFloat(y,15,FloatStr);
  LongStr.RealToEng(y,15,EngStr);
  LongStr.RealToFixed(y,15,FixedStr);
  LongStr.RealToStr(y,Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

  STextIO.WriteString(' 0.0001 : ');
  LongStr.RealToFloat(z,15,FloatStr);
  STextIO.WriteString(FloatStr);
  STextIO.WriteString(', ');
  LongStr.RealToEng(z,15,EngStr);
  STextIO.WriteString(EngStr);
  STextIO.WriteString(', ');
  LongStr.RealToFixed(z,15,FixedStr);
  STextIO.WriteString(FixedStr);
  STextIO.WriteString(', ');
  LongStr.RealToStr(z,Str);
  STextIO.WriteString(Str);
  STextIO.WriteLn;
  STextIO.WriteLn;

END TestRealsg2.


Am I doing anything wrong?

--rob



reply via email to

[Prev in Thread] Current Thread [Next in Thread]