Browse Source

fcl-js: jswriter: double(high(int64))

git-svn-id: trunk@38117 -
Mattias Gaertner 7 years ago
parent
commit
e00e3b690b
2 changed files with 10 additions and 2 deletions
  1. 2 2
      packages/fcl-js/src/jswriter.pp
  2. 8 0
      packages/pastojs/tests/tcmodules.pas

+ 2 - 2
packages/fcl-js/src/jswriter.pp

@@ -581,8 +581,8 @@ begin
       end;
       end;
     jstNumber :
     jstNumber :
       if (Frac(V.AsNumber)=0)
       if (Frac(V.AsNumber)=0)
-          and (V.AsNumber>=double(low(int64)))
-          and (V.AsNumber<=double(high(int64))) then
+          and (V.AsNumber>double(low(int64)))
+          and (V.AsNumber<double(high(int64))) then
         begin
         begin
         Str(Round(V.AsNumber),S);
         Str(Round(V.AsNumber),S);
         end
         end

+ 8 - 0
packages/pastojs/tests/tcmodules.pas

@@ -4408,6 +4408,8 @@ begin
   '  fn1_0En12 = -1E-12;',
   '  fn1_0En12 = -1E-12;',
   '  maxdouble = 1.7e+308;',
   '  maxdouble = 1.7e+308;',
   '  mindouble = -1.7e+308;',
   '  mindouble = -1.7e+308;',
+  '  MinSafeIntDouble = -$10000000000000;',
+  '  MaxSafeIntDouble =   $fffffffffffff;',
   'var',
   'var',
   '  d: double = b;',
   '  d: double = b;',
   'begin',
   'begin',
@@ -4434,6 +4436,8 @@ begin
   '  d:=fn1_0En12;',
   '  d:=fn1_0En12;',
   '  d:=maxdouble;',
   '  d:=maxdouble;',
   '  d:=mindouble;',
   '  d:=mindouble;',
+  '  d:=MinSafeIntDouble;',
+  '  d:=MaxSafeIntDouble;',
   '']);
   '']);
   ConvertProgram;
   ConvertProgram;
   CheckSource('TestDouble',
   CheckSource('TestDouble',
@@ -4455,6 +4459,8 @@ begin
     'this.fn1_0En12 = -1E-12;',
     'this.fn1_0En12 = -1E-12;',
     'this.maxdouble = 1.7e+308;',
     'this.maxdouble = 1.7e+308;',
     'this.mindouble = -1.7e+308;',
     'this.mindouble = -1.7e+308;',
+    'this.MinSafeIntDouble = -0x10000000000000;',
+    'this.MaxSafeIntDouble = 0xfffffffffffff;',
     'this.d = 4.4;'
     'this.d = 4.4;'
     ]),
     ]),
     LinesToStr([
     LinesToStr([
@@ -4481,6 +4487,8 @@ begin
     '$mod.d = -1E-12;',
     '$mod.d = -1E-12;',
     '$mod.d = 1.7E308;',
     '$mod.d = 1.7E308;',
     '$mod.d = -1.7E308;',
     '$mod.d = -1.7E308;',
+    '$mod.d = -4503599627370496;',
+    '$mod.d = 4503599627370495;',
     '']));
     '']));
 end;
 end;