JS如何只获取长浮点数的整数部分?
How to obtain only the integer part of a long floating precision number with JS?
我知道有
Math.floor
parseInt
但是关于这个案例:
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 描述了问题;有限的相对精度是问题所在。
我知道有
Math.floor
parseInt
但是关于这个案例:
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 描述了问题;有限的相对精度是问题所在。