Browse Source

* removed extra space character when generating the maximal number of
significant digits and frac(value)+roundcorr overflows to 1
(mantis #15308, fix by Dariusz Mazur)

git-svn-id: trunk@14563 -

Jonas Maebe 15 years ago
parent
commit
0c1247ba7d
3 changed files with 26 additions and 9 deletions
  1. 1 0
      .gitattributes
  2. 0 9
      rtl/inc/real2str.inc
  3. 25 0
      tests/webtbs/tw15308.pp

+ 1 - 0
.gitattributes

@@ -10171,6 +10171,7 @@ tests/webtbs/tw15293.pp svneol=native#text/plain
 tests/webtbs/tw15293a.pp svneol=native#text/plain
 tests/webtbs/tw15296.pp svneol=native#text/plain
 tests/webtbs/tw15304.pp svneol=native#text/plain
+tests/webtbs/tw15308.pp svneol=native#text/plain
 tests/webtbs/tw1532.pp svneol=native#text/plain
 tests/webtbs/tw15364.pp svneol=native#text/plain
 tests/webtbs/tw15370.pp svneol=native#text/plain

+ 0 - 9
rtl/inc/real2str.inc

@@ -379,15 +379,6 @@ begin
             begin
               roundStr(temp,spos);
               d := frac(d);
-              if (f < 0) then
-                begin
-                  dec(currprec);
-                  if (currprec=0) then
-                    begin
-                      inc(spos);
-                      temp[spos]:='0';
-                    end;
-                end;
             end;
           { calculate the necessary fractional digits }
           for fracCount := 1 to currPrec do

+ 25 - 0
tests/webtbs/tw15308.pp

@@ -0,0 +1,25 @@
+program testformatfloat;
+
+uses SysUtils;
+
+const
+   val_format: string = '0.0000E+000';
+   
+var
+   input: extended;
+
+begin
+   decimalseparator:='.';
+   input:=1.05e2;
+   if (formatfloat(val_format,input)<>'1.0500E+002') then
+     begin
+       writeln(formatfloat(val_format,input));
+       halt(1);
+     end;
+   input:=1.06e2;
+   if (formatfloat(val_format,input)<>'1.0600E+002') then
+     begin
+       writeln(formatfloat(val_format,input));
+       halt(2);
+     end;
+end.