当前位置:  开发笔记 > 编程语言 > 正文

与Double.NaN平等

如何解决《与Double.NaN平等》经验,为你挑选了4个好方法。

我有以下代码......

if (Price_Foreign != Double.NaN)
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}

哪个输出:

NaN USD

是什么赋予了?

我正在使用Double.NaN来指示该值不存在,并且不应该输出.



1> Andrew Hare..:

也许您正在寻找IsNaN静态功能?

尝试这样的事情:

if (!Double.IsNaN(Price_Foreign))
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}



2> Todd Gamblin..:

在IEEE 754浮点标准与NaN的比较NaN的状态将始终返回false.如果必须这样做,请使用Double.isNaN().

但是,这不是做你想要做的事情的最佳方式.双打不准确,你在这里使用它们代表价格.我打赌,在某些时候,你也想要比较平等价格.这不会起作用,因为你不能依赖浮点相等.

您应该真正考虑使用某些整数类型来表示这些值(支持相等比较),而不是尝试使用双精度数.双打用于科学问题; 不是为了财务.



3> Martijn Cour..:

作为背景信息:该IsNaN()方法的作用是什么return v != v;



4> Grant Wagner..:

Double.NaN 不等于任何东西,甚至不是自己.

请参阅.NET Framework类库文档中的Double.NaN字段:

使用IsNaN确定值是否不是数字.通过将值与另一个等于NaN的值进行比较,无法确定值是否为数字.


除非你使用`.Equals`!
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有