gpt4 book ai didi

java - "isNaN(INFINITY)==false"是错误的

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:15:38 24 4
gpt4 key购买 nike

无穷大不是任何标准数学中的数字,这会让人想到表达式

Double.isNaN(Double.POSITIVE_INFINITY)

应该评估为 true .但是,快速测试表明它的计算结果为 false .仔细查看函数规范证实了我的怀疑:“isNaN”不应被解释为“不是数字”,而是“是非数字值”。

我的问题是他们为什么要这样实现它?为什么他们不以这样的方式实现它,它也会返回 false正无穷大还是负无穷大?

实际上我现在使用 (Double.isNaN(x) || Double.isInfinite(x))比我只使用 Double.isNaN(x) 的频率更高.因此最好使用 Double.isNaN(x)(Double.isNaN(x) && !Double.isInfinite(x))分别代替。

尽管现在更改它会令人困惑 - 如果按照我在这里描述的方式实现和解释功能不是更好吗?

还有哪些其他考虑因素在这里起作用?

PS:排中律请省略。 ;)

最佳答案

博士。威廉·卡汉 (William Kahan) 有很多文章解释了他在 IEEE-754. 中的决定背后的想法。

我建议你阅读他的作品以了解其推理。他是 IEEE-754 背后的主要插入者之一,所以最好从马口中得到答案。

顺便说一句,从技术意义上讲,+/-Inf 是 affinely extended real number system. 中的数字因此,仅出于这个原因,我希望 isNaN 在无穷大时返回 false。

关于java - "isNaN(INFINITY)==false"是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723072/

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