版本

no-loss-of-precision

禁止使用會失去精度的數字字面值

推薦

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

此規則會禁止使用數字字面值,這些數字在轉換為 JS Number 時,由於 64 位元浮點數捨入而會在執行時失去精度。

規則詳情

在 JS 中,Number 根據 IEEE 754 標準儲存為雙精度浮點數。因此,數字只能保留到一定位數的精度。如果程式設計師輸入額外的位數,這些位數將會在轉換為 Number 型別時遺失,並導致意料之外的行為。

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

在遊樂場開啟
/*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;

此規則的正確程式碼範例

在遊樂場開啟
/*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 中引入的。

資源

變更語言