| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent f667215 commit e476e43
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1851,23 +1851,28 @@ function formatNumber(fn, number, numericSeparator) { | |||
| 1851 | 1851 | } | |
| 1852 | 1852 | return fn(`${number}`, 'number'); | |
| 1853 | 1853 | } | |
| 1854 | + | ||
| 1855 | + const numberString = String(number); | ||
| 1854 | 1856 | const integer = MathTrunc(number); | |
| 1855 | - const string = String(integer); | ||
| 1857 | + | ||
| 1856 | 1858 | if (integer === number) { | |
| 1857 | - if (!NumberIsFinite(number) || StringPrototypeIncludes(string, 'e')) { | ||
| 1858 | - return fn(string, 'number'); | ||
| 1859 | + if (!NumberIsFinite(number) || StringPrototypeIncludes(numberString, 'e')) { | ||
| 1860 | + return fn(numberString, 'number'); | ||
| 1859 | 1861 | } | |
| 1860 | - return fn(`${addNumericSeparator(string)}`, 'number'); | ||
| 1862 | + return fn(addNumericSeparator(numberString), 'number'); | ||
| 1861 | 1863 | } | |
| 1862 | 1864 | if (NumberIsNaN(number)) { | |
| 1863 | - return fn(string, 'number'); | ||
| 1865 | + return fn(numberString, 'number'); | ||
| 1864 | 1866 | } | |
| 1867 | + | ||
| 1868 | + const decimalIndex = StringPrototypeIndexOf(numberString, '.'); | ||
| 1869 | + const integerPart = StringPrototypeSlice(numberString, 0, decimalIndex); | ||
| 1870 | + const fractionalPart = StringPrototypeSlice(numberString, decimalIndex + 1); | ||
| 1871 | + | ||
| 1865 | 1872 | return fn(`${ | |
| 1866 | - addNumericSeparator(string) | ||
| 1873 | + addNumericSeparator(integerPart) | ||
| 1867 | 1874 | }.${ | |
| 1868 | - addNumericSeparatorEnd( | ||
| 1869 | - StringPrototypeSlice(String(number), string.length + 1), | ||
| 1870 | - ) | ||
| 1875 | + addNumericSeparatorEnd(fractionalPart) | ||
| 1871 | 1876 | }`, 'number'); | |
| 1872 | 1877 | } | |
| 1873 | 1878 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3493,6 +3493,27 @@ assert.strictEqual( | |||
| 3493 | 3493 | util.inspect(-123456789.12345678, { numericSeparator: true }), | |
| 3494 | 3494 | '-123_456_789.123_456_78' | |
| 3495 | 3495 | ); | |
| 3496 | + | ||
| 3497 | + // Regression test for https://github.com/nodejs/node/issues/59376 | ||
| 3498 | + // numericSeparator should work correctly for negative fractional numbers | ||
| 3499 | + { | ||
| 3500 | + // Test the exact values from the GitHub issue | ||
| 3501 | + const values = [0.1234, -0.12, -0.123, -0.1234, -1.234]; | ||
| 3502 | + assert.strictEqual( | ||
| 3503 | + util.inspect(values, { numericSeparator: true }), | ||
| 3504 | + '[ 0.123_4, -0.12, -0.123, -0.123_4, -1.234 ]' | ||
| 3505 | + ); | ||
| 3506 | + | ||
| 3507 | + // Test individual negative fractional numbers between -1 and 0 | ||
| 3508 | + assert.strictEqual( | ||
| 3509 | + util.inspect(-0.1234, { numericSeparator: true }), | ||
| 3510 | + '-0.123_4' | ||
| 3511 | + ); | ||
| 3512 | + assert.strictEqual( | ||
| 3513 | + util.inspect(-0.12345, { numericSeparator: true }), | ||
| 3514 | + '-0.123_45' | ||
| 3515 | + ); | ||
| 3516 | + } | ||
| 3496 | 3517 | } | |
| 3497 | 3518 | ||
| 3498 | 3519 | // Regression test for https://github.com/nodejs/node/issues/41244 | |
| Back | FazBrowse Home | New Git URL |
0 commit comments