我正在将一个Java应用程序移植到使用
的C#double x;
if (x == null) blah blah
.Net中的 double
不可为空,因此需要更改。没什么大不了的。
测试浮点数是否相等是不好的做法。所以如果我初始化一个变量
double d = double.MaxValue;
后来想测试它
if (d == double.MaxValue) blah blah
这是有效的吗?我是否保证测试将始终返回true,假设d没有给出新值?
答案 0 :(得分:4)
Double
是可空的,因为它是一个类,因此是一个引用类型, box 一个double
。您应该在C#中使用Nullable<double>
或double?
(两者在技术上都相同)。 Nullable<T>
是.NET值类型的通用“盒子包装器”。
答案 1 :(得分:2)
根据您之前指定的某个常量检查浮点值没有任何问题。
关于浮点数和相等比较的臭部分试图比较计算值或计算值和常数 - 由于舍入误差可能会失败。