我有以下代码...

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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top