C# 与Double.NaN相等
我有以下代码C# 与Double.NaN相等,c#,equality,nan,C#,Equality,Nan,我有以下代码 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)) { outp
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));
}
表示将NaN与NaN进行比较将始终返回false。如果必须这样做,请使用Double.IsNaN()
但是,这不是做你想做的事情的最佳方式。双倍不是精确的,你用它们来表示价格。我打赌,在某个时候,你也会想要比较价格是否平等。那是行不通的,因为
您应该考虑对这些值使用某种整数类型(支持相等比较),而不是尝试使用双精度。双打是科学问题;不适用于金融。
Double.NaN
不等于任何东西,甚至不等于它本身
请参见.NET Framework类库文档中的:
用于确定是否存在一个值
这不是一个数字。这是不可能的
确定某个值是否不是
通过将其与另一个进行比较来进行编号
值等于NaN
作为背景信息:
IsNaN()
方法所做的是返回v!=五,代码>参见对原始问题的评论。--多年前,我一直在使用现有的数据库。除非您使用.Equals
!不,看到了吗