为啥要将双精度值分配给双精度值?导致 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

如何将双精度值从 json 转换为函数

将双精度值舍入为 2 位十进制数字 [重复]

函数将双精度值格式化为字符串

如何防止 PHP SoapClient 将双精度值转换为科学计数法?

将双精度值存储在二进制文件中并读取它