使用 NAN 作为未定义的值

Using NAN as not defined value

我正在开发一个向用户显示双精度值的 CSharp 项目。该值可能未定义,在这种情况下我将显示一个空字符串。定义该值时,它将大于或等于零。为了处理未定义的情况,我想我可以定义一个超出范围的值,例如-1 表示未定义或将值包装在具有布尔定义标志的 class 中。然后我想,为什么不只使用 Double.NAN 来表示值未定义,而 Double.IsNAN 来检查未定义的值。我认为这会起作用,但感觉有点不对劲。使用 Double.NAN 表示未定义的值是个好主意吗?

您可以使用 existing wrapper Nullable<double>double?

double? d;

if (d.HasValue)
  Console.WriteLine($"{d.Value}");


Console.WriteLine($"{d.GetValueOrDefault(0)}"); // this will print 0 if value was not defined

它更适合我想,因为 double.NaN 是针对数学运算的结果未定义的情况