题
我有以下代码...
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
不等于任何东西,甚至不本身。
请参阅 Double.NaN领域的.NET Framework类库文档中:
使用 IsNaN 以确定是否值 是不是数字。这是不可能的 确定值是否是一个不 通过比较到另一个号码 值等于为NaN。
不隶属于 StackOverflow