Skip to content
← Back to rules

eslint/no-loss-of-precision 正确性

This rule is turned on by default.

它的作用

禁止数字字面量的精度丢失。

为什么这是个问题?

在某些情况下可能导致意外结果。 例如,在执行数学运算时。

在 JavaScript 中,数值根据 IEEE 754 标准以双精度浮点数形式存储。 由于这一特性,数值只能保留一定数量的数字精度。如果程序员输入了额外的数字, 这些数字将在转换为 Number 类型时丢失,从而导致意外或不正确的行为。

示例

此规则的错误代码示例:

javascript
var x = 2e999;
javascript
var x = 9007199254740993;
javascript
var x = 5123000000000000000000000000001;
javascript
var x = 1230000000000000000000000.0;
javascript
var x = 0x200000_0000000_1;

此规则的正确代码示例:

javascript
var x = 12345;
javascript
var x = 123.456;
javascript
var x = 123.0;
javascript
var x = 123e34;
javascript
var x = 0x1fff_ffff_fff_fff;

如何使用

要通过配置文件或 CLI 启用此规则,可以使用:

json
{
  "rules": {
    "no-loss-of-precision": "error"
  }
}
bash
oxlint --deny no-loss-of-precision

参考资料