繁体   English   中英

浮点数什么时候溢出?

[英]When does a floating point number overflow?

为什么是

Number.MAX_VALUE + Number.MAX_VALUE == Number.MAX_VALUE
=> false

Number.MAX_VALUE + Number.MIN_VALUE == Number.MAX_VALUE
=> true

我的期望是,我添加到最大值的所有内容都必须溢出。

像这样想象:

MAX_VALUE =无限

MIN_VALUE = 0

因此,当您将MAX_VALUE与MIN_VALUE相加时,就像您添加了0。因此仍为MAX_VALUE。

可以将其视为所有非零数字都在很远的右边,因此它们没有净作用。

JavaScript的Number.MAX_VALUE被错误命名。 它不是最大可表示值。 它是最大可表示的有限值。 实际最大可表示值是无穷大。

如果名称正确,则Number.MAX_VALUE为无穷大,则Number.MAX_VALUE + Number.MAX_VALUE == Number.MAX_VALUE将为true,因为无穷大加无穷Number.MAX_VALUE + Number.MAX_VALUE == Number.MAX_VALUE真。

由于Number.MAX_VALUE + Number.MAX_VALUE的数学值超出了可表示的有限值,因此将其舍入为无穷大。

Number.MAX_VALUE + Number.MIN_VALUE == Number.MAX_VALUE为true,因为算术四舍五入到最接近的可表示值,并且将一个小值加到最大有限值会产生非常接近最大有限值的结果,因此将其四舍五入到最大值有限值。

(注意:关于四舍五入到最接近的可表示值的规则将无穷大当做它在有限值末尾的正常位置,因此,任何大于或等于Number.MAX_VALUE加上超出一半的“步长”会四舍五入为无穷大。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM