Skip to content

noPrecisionLoss (since v1.0.0)

Diagnostic Category: lint/correctness/noPrecisionLoss

Sources:

Disallow literal numbers that lose precision

const x = 9007199254740993
correctness/noPrecisionLoss.js:1:11 lint/correctness/noPrecisionLoss ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   This number literal will lose precision at runtime.
  
  > 1 │ const x = 9007199254740993
             ^^^^^^^^^^^^^^^^
    2 │ 
  
   The value at runtime will be 9007199254740992
  
const x = 5.123000000000000000000000000001
correctness/noPrecisionLoss.js:1:11 lint/correctness/noPrecisionLoss ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   This number literal will lose precision at runtime.
  
  > 1 │ const x = 5.123000000000000000000000000001
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    2 │ 
  
   The value at runtime will be 5.123
  
const x = 0x20000000000001
correctness/noPrecisionLoss.js:1:11 lint/correctness/noPrecisionLoss ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   This number literal will lose precision at runtime.
  
  > 1 │ const x = 0x20000000000001
             ^^^^^^^^^^^^^^^^
    2 │ 
  
   The value at runtime will be 9007199254740992
  
const x = 0x2_000000000_0001;
correctness/noPrecisionLoss.js:1:11 lint/correctness/noPrecisionLoss ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   This number literal will lose precision at runtime.
  
  > 1 │ const x = 0x2_000000000_0001;
             ^^^^^^^^^^^^^^^^^^
    2 │ 
  
   The value at runtime will be 9007199254740992
  
const x = 12345
const x = 123.456
const x = 123e34
const x = 12300000000000000000000000
const x = 0x1FFFFFFFFFFFFF
const x = 9007199254740991
const x = 9007_1992547409_91