跳转到内容

noPrecisionLoss

Diagnostic Category: lint/correctness/noPrecisionLoss

Since: v1.0.0

Sources:

Disallow literal numbers that lose precision

const x = 9007199254740993
code-block.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
code-block.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
code-block.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;
code-block.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