gpt4 book ai didi

javascript - 为什么 0.3 + 0 == 0.3 和 0.1 + 0 == 0.1 在 javascript 中,而 0.3 和 0.1 不能用二进制精确表示

转载 作者:行者123 更新时间:2023-12-05 01:53:19 26 4
gpt4 key购买 nike

第一个问题:在 java 脚本中,如果我们这样做的话。

0.2 + 0.1
=>0.30000000000000004

因为 0.2、0.1 被四舍五入为不同的数字,并且总和也被四舍五入为不同的数字 This article explains the behind the scenes .我明白这一点但是当我这样做的时候。

0.3 + 0
=>0.3

它显示 0.3 为什么? 0.3 不能用二进制正确表示,应该四舍五入到不同的数字吧?
所以 0.3 + 0 的值应该是 0.3 的四舍五入数和总和(如果需要)?

第二个问题:
当我们这样做的时候。

let x = 0.3

由于 0.3 无法用二进制精确表示,因此它被四舍五入为另一个数字,但是当您访问变量 x 时,为什么它显示 0.3 而不是实际四舍五入的数字。

x
=>0.3

但是当你这样做的时候。

0.2 + 0.1
=>0.30000000000000004

它显示数字的实际四舍五入但不是 0.3。请解释。

最佳答案

添加 0.1 时得到的值和 0.2以及您从文字中获得的值 0.3不同的值(两者都不正好是 3/10,两者都非常接近)。 (添加 0 无关紧要,它不会更改添加到的数字的值。)您从 0.1 + 0.2 获得的那个刚刚超过 3/10;你从0.3得到的那个(如果我没记错的话)不到 3/10ths。

在将 float 转换为文本时,JavaScript 遵循通常的做法,即仅包含所需数量的数字,以将其与格式可以表示的下一个最接近的值区分开来(详情 in the specthe academic paper the spec references )。 0.3不需要任何额外的数字来区分,但是 0.30000000000000004确实(我猜想将它与 0.3 区分开来,但我实际上并不知道)。

关于javascript - 为什么 0.3 + 0 == 0.3 和 0.1 + 0 == 0.1 在 javascript 中,而 0.3 和 0.1 不能用二进制精确表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71108587/

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