gpt4 book ai didi

javascript - IEEE 754 中 Epsilon 的解释

转载 作者:行者123 更新时间:2023-12-02 18:00:42 25 4
gpt4 key购买 nike

Epsilon 是数字编码方案中的最小值,可与 1 添加以生成具有明显不同表示形式的数字。

任何人都可以帮我直观地理解为什么后面的例子中精度损失更大吗? 👇

console.log(Number.EPSILON > (0.1 + 0.2 - 0.3)) // true

console.log(Number.EPSILON > (10000.1 + 10000.2 - 20000.3)) // false

准确表示许多易于书写的十进制数所需的有效数是否大于可用的 52 位,因此 chop 会导致不准确。然后将这个误差乘以指数,如果指数很大,那么误差就会放大?

最佳答案

来自MDN :

The EPSILON property has a value of approximately 2.2204460492503130808472633361816E-16, or 2-52. This is the smallest value that can be added to 1 to get a distinct number, because double precision floating point format only has 52 bits to represent the mantissa, and the lowest bit has a significance of 2^-52.

Note that the absolute accuracy of floating numbers decreases as the number gets larger, because the exponent grows while the mantissa's accuracy stays the same.

0.1 + 0.2 - 0.3中累积的错误比 EPSILON 小,对于 10.1 + 10.2 - 10.3 来说实际上也是如此。和100.1 + 100.2 - 200.3 :

console.log(Number.EPSILON > (100.1 + 100.2 - 200.3)); // true

但在数千个方面,转换为 IEEE-754 所产生的误差幅度已经大于 EPSILON:

console.log(Number.EPSILON > (1000.1 + 1000.2 - 2000.3)); // false

为了说明这一点,1 亿 ( 100000000.1 ) 已经有一个错误 -0.1 ,这意味着 100000000.1被视为 100000000 。尝试此 converter 中的一些其他值显示 IEEE-754 格式的数字以及转换产生的错误。

关于javascript - IEEE 754 中 Epsilon 的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74520686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com