为啥要将双精度值分配给双精度值?导致 NaN
Posted
技术标签:
【中文标题】为啥要将双精度值分配给双精度值?导致 NaN【英文标题】:Why would assigning a double value to double? cause a NaN为什么要将双精度值分配给双精度值?导致 NaN 【发布时间】:2012-11-07 03:31:21 【问题描述】:这里是场景! (简体)
double val1 = 0.0;
double? val2 = val1;
为什么 val2 会导致 NaN?
【问题讨论】:
我认为问题在“简化”工作中已经丢失。您需要添加足够多的原始代码来重现该场景。 也许我的问题太简单了。如果有的话,在什么情况下会发生这种情况。从逻辑上讲,它不应该!但确实如此????实际代码完全按照所列内容执行,除了这些值是传递参数值的 2 个类的一部分。 我猜这是一个 0/0 问题。 N/0 将给出Infinity
(n!=0)
您需要提供一个小但完整的代码示例,实际上演示了这个问题。我们完全有能力自己编写两个赋值语句,正如@Marc 指出的那样,结果不是您描述的结果。
【参考方案1】:
简单地说:它不会也不会。
将非NaN double
分配给double?
的结果是具有非NaN 值的double?
;在这种情况下0.0
【讨论】:
是的,我同意...但是我的场景,虽然比示例稍微复杂一点,但基本上可以归结为这一点。无论如何感谢您的快速回答! @JandeJager 不,“基本上”中丢失了一些东西。您需要发布确实重现您所见内容的内容。您的原始代码和您发布的代码之间的差异是问题所在。 我会尝试复制它而无需发布 20000 行代码......这可能是问题所在。只是想看看是否有任何明显的原因导致这种情况发生。但是你会因为勇敢地回答一个愚蠢的问题而得到“打勾”!发送! @Jan 寻找部门。零除以零是获得 NaN 的最简单方法 谢谢大家。是的,问题是“除以零”!以上是关于为啥要将双精度值分配给双精度值?导致 NaN的主要内容,如果未能解决你的问题,请参考以下文章
在不损失精度的情况下将双精度从 C++ 转移到 python