版本

no-loss-of-precision

不允許使用會失去精確度的字面數字

建議

設定檔中使用來自 @eslint/jsrecommended 設定會啟用此規則

此規則將不允許使用數字字面值,這些字面值在執行階段轉換為 JS Number 時,由於 64 位元浮點數捨入而失去精確度。

規則詳細資訊

在 JS 中,Number 以雙精度浮點數形式儲存,符合 IEEE 754 標準。因此,數字只能保留一定位數的準確度。如果程式設計師輸入額外的位數,這些位數將在轉換為 Number 類型時遺失,並導致非預期的行為。

此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint no-loss-of-precision: "error"*/

const a = 9007199254740993
const b = 5123000000000000000000000000001
const c = 1230000000000000000000000.0
const d = .1230000000000000000000000
const e = 0X20000000000001
const f = 0X2_000000000_0001;

此規則的正確程式碼範例

在 Playground 中開啟
/*eslint no-loss-of-precision: "error"*/

const a = 12345
const b = 123.456
const c = 123e34
const d = 12300000000000000000000000
const e = 0x1FFFFFFFFFFFFF
const f = 9007199254740991
const g = 9007_1992547409_91

版本

此規則在 ESLint v7.1.0 中引入。

資源

變更語言