.net double d == double.MaxValue

时间:2013-05-30 19:38:11

标签: java .net

我正在将一个Java应用程序移植到使用

的C#
double x;

if (x == null) blah blah
.Net中的

double不可为空,因此需要更改。没什么大不了的。

测试浮点数是否相等是不好的做法。所以如果我初始化一个变量

double d = double.MaxValue;

后来想测试它

if (d == double.MaxValue) blah blah

这是有效的吗?我是否保证测试将始终返回true,假设d没有给出新值?

2 个答案:

答案 0 :(得分:4)

Java中的

Double是可空的,因为它是一个类,因此是一个引用类型, box 一个double。您应该在C#中使用Nullable<double>double?(两者在技术上都相同)。 Nullable<T>是.NET值类型的通用“盒子包装器”。

答案 1 :(得分:2)

根据您之前指定的某个常量检查浮点值没有任何问题。

关于浮点数和相等比较的臭部分试图比较计算值或计算值和常数 - 由于舍入误差可能会失败。