GeezerVison is showing github.com — util: fix numericSeparator with negative fractional numbers · nodejs/node@e476e43
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: lib/internal/util/inspect.js +14-9Lines changed: 14 additions & 9 deletions | 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 |
| |
Collapse file Copy file name to clipboardExpand all lines: test/parallel/test-util-inspect.js +21Lines changed: 21 additions & 0 deletions | 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 | |
|