我有以下代码......
if (Price_Foreign != Double.NaN) { output.Append(spacer); output.Append(String.Format("{0,-10:C} USD",Price_Foreign)); }
哪个输出:
NaN USD
是什么赋予了?
我正在使用Double.NaN来指示该值不存在,并且不应该输出.
也许您正在寻找IsNaN
静态功能?
尝试这样的事情:
if (!Double.IsNaN(Price_Foreign)) { output.Append(spacer); output.Append(String.Format("{0,-10:C} USD",Price_Foreign)); }
在IEEE 754浮点标准与NaN的比较NaN的状态将始终返回false.如果必须这样做,请使用Double.isNaN().
但是,这不是做你想要做的事情的最佳方式.双打不准确,你在这里使用它们代表价格.我打赌,在某些时候,你也想要比较平等价格.这不会起作用,因为你不能依赖浮点相等.
您应该真正考虑使用某些整数类型来表示这些值(支持相等比较),而不是尝试使用双精度数.双打用于科学问题; 不是为了财务.
作为背景信息:该IsNaN()
方法的作用是什么return v != v;
Double.NaN
不等于任何东西,甚至不是自己.
请参阅.NET Framework类库文档中的Double.NaN字段:
使用IsNaN确定值是否不是数字.通过将值与另一个等于NaN的值进行比较,无法确定值是否为数字.