Spec-Zone.ru › ESLint

no-loss-of-precision

Запрещает числовые литералы, теряющие точность

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило

Это правило запрещает использование числовых литералов, теряющих точность во время выполнения при преобразовании в JS Number из-за округления 64-разрядных чисел с плавающей точкой.

Подробности правила

В JS Numbers хранятся в виде чисел двойной точности с плавающей точкой согласно стандарту 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.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-loss-of-precision

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API