]> git.kaiwu.me - njs.git/commitdiff
Fixed Number.prototype.toPrecision().
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 19 Feb 2020 14:21:32 +0000 (17:21 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 19 Feb 2020 14:21:32 +0000 (17:21 +0300)
This closes #290 issue on Github.

src/njs_dtoa.c
src/test/njs_unit_test.c

index 4c001eb2622554143bb3e288f215ed70eb7d79fe..7d8e9e4441cd76241b9e30abf8ac23f9f32af23b 100644 (file)
@@ -532,7 +532,7 @@ njs_dtoa_prec_format(char *start, size_t prec, size_t len, int point)
         if (point < (int) prec) {
             start[point] = '.';
 
-            njs_memset(&start[point + 1], '0', prec - len);
+            njs_memset(&start[point + 1], '0', prec - point);
         }
 
     } else if (point < (int) prec) {
index d278fae0db1065d34dd247a928a37c41014834b4..c8f65abe1459b5888a6214f125b53dbb9dab6f99 100644 (file)
@@ -609,6 +609,10 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("(-(2**10000)).toPrecision()"),
       njs_str("-Infinity") },
 
+    { njs_str("var v = parseFloat('9'.repeat(98));"
+              "[98,100].map(p=>v.toPrecision(p).length)"),
+      njs_str("98,101") },
+
     { njs_str("(-0).toPrecision(2)"),
       njs_str("0.0") },