Skip to content
← Back to rules

eslint/no-loss-of-precision 正しさ

This rule is turned on by default.

何をしますか

数値リテラルの精度損失を許可しない。

なぜ悪いですか

特定の状況で予期しない結果につながる可能性があります。 たとえば、数学的な演算を行う場合です。

JavaScriptでは、数値はIEEE 754仕様に従って倍精度浮動小数点数として格納されます。このため、数値は特定の桁数までしか正確に保持できません。プログラマーが追加の桁を入力した場合、その桁は数値型への変換時に失われてしまい、予期しない/誤った動作を引き起こす原因になります。

このルールに対して不適切なコードの例:

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

参照