]> git.proxmox.com Git - pve-eslint.git/blame - eslint/docs/rules/no-loss-of-precision.md
update to 7.1.0 sources
[pve-eslint.git] / eslint / docs / rules / no-loss-of-precision.md
CommitLineData
ebb53d86
TL
1# Disallow Number Literals That Lose Precision (no-loss-of-precision)
2
3This rule would disallow the use of number literals that immediately lose precision at runtime when converted to a JS `Number` due to 64-bit floating-point rounding.
4
5## Rule Details
6
7In JS, `Number`s are stored as double-precision floating-point numbers according to the [IEEE 754 standard](https://en.wikipedia.org/wiki/IEEE_754). Because of this, numbers can only retain accuracy up to a certain amount of digits. If the programmer enters additional digits, those digits will be lost in the conversion to the `Number` type and will result in unexpected behavior.
8
9Examples of **incorrect** code for this rule:
10
11```js
12/*eslint no-loss-of-precision: "error"*/
13
14const x = 9007199254740993
15const x = 5123000000000000000000000000001
16const x = 1230000000000000000000000.0
17const x = .1230000000000000000000000
18const x = 0X20000000000001
19```
20
21Examples of **correct** code for this rule:
22
23```js
24/*eslint no-loss-of-precision: "error"*/
25
26const x = 12345
27const x = 123.456
28const x = 123e34
29const x = 12300000000000000000000000
30const x = 0x1FFFFFFFFFFFFF
31const x = 9007199254740991
32```