0

我正在将一个 Java 应用程序移植到 C#,它利用

double x;

if (x == null) blah blah

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

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

double d = double.MaxValue;

后来想测试一下

if (d == double.MaxValue) blah blah

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

4

2 回答 2

4

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

于 2013-05-30T19:41:41.567 回答
2

根据您之前分配的某个常量检查浮点值并没有错。

关于浮点数和等式比较的臭味部分是尝试比较计算值或计算值和常数 - 这可能会由于舍入错误而失败。

于 2013-05-30T19:47:48.297 回答