JS如何只获取长浮点数的整数部分?

How to obtain only the integer part of a long floating precision number with JS?

我知道有

但是关于这个案例:

Math.floor(1.99999999999999999999999999)

返回2,如何只得到它的整数部分,等于1?

1.99999999999999999999999999 而不是 数字的实际值。在解析文字后,它的 值为 2 因为这是 'as best' 因为 JavaScript 可以表示这样的值。

JavaScript 数字是 IEEE-754 binary64 or "double precision",允许 15 到 17 位有效 [十进制] 精度数字 - 显示的文字需要 27 位有效数字,这会导致信息丢失。

测试:1.99999999999999999999999999 === 2(结果为真)。

此处 is another answer of mine 描述了问题;有限的相对精度是问题所在。