【发布时间】:2015-03-10 19:31:09
【问题描述】:
我遇到了一些旧的遗留代码,如下所示:
s1 = Double.toString(dbVal1);
s2 = Double.toString(dbVal2);
if (s1.compareTo(s2)!=0)
{
return false;
}
return true;
其中dbVal1 和dbVal2 都是双精度值。
我在分析时发现了这一点,toString 方法调用占用了相当多的 CPU 时间。有什么理由我不能用 1 或 2 替换它吗?如果是这样,有什么区别/哪个更好?
1.
return dbVal1 == dbVal2;
2.
return Double.compare(dbVal1,dbVal2) == 0;
【问题讨论】:
-
看来你可以......那个字符串演员有什么理由吗??
-
也许,出于某种原因,他们想要
doubles 上的字典顺序? -
这就是我要删除的内容,它会导致很多速度变慢,但由于某种我想不出的原因,我不知道是否有必要。
-
@kooker 词典顺序仅与
</>相关。compare() </> 0。在这里,我们只检查==resp。== 0,所以顺序不相关。 -
我猜原来的程序员试图避免舍入错误?看看这个答案:stackoverflow.com/questions/8081827/…