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