use*_*121 -1 java double list arraylist
targetPixValList是一个包含Double对象的列表,它在列表中的连续位置也包含类似的值,当我尝试使用Code_1比较两个Double值时,cnt返回零.当我使用code_2时,cnt返回值.
并且列表的类型是
为什么"=="运算符不适用于Double?
Code_1:
int cnt = 0;
for (int i = 0; i < cs.targetPixValList.size()-1; i++) {
if (cs.targetPixValList.get(i) == cs.targetPixValList.get(i+1))
++cnt;
}
Run Code Online (Sandbox Code Playgroud)
CODE_2:
int cnt = 0;
for (int i = 0; i < cs.targetPixValList.size()-1; i++) {
if (cs.targetPixValList.get(i).equals(cs.targetPixValList.get(i+1)))
++cnt;
}
Run Code Online (Sandbox Code Playgroud)
Double是原语的类包装器double.比较Double(或对象引用)的实例时使用equals方法而不是==.
此外,对于您的情况,由于浮点比较(在幕后完成)Double,使用比较equals也可能给出错误的结果.如果你有敏感的浮动点值的工作,我建议使用BigDecimal的替代Double和使用BigDecimal#compareTo,而不是equals因为BigDecimal#equals没有考虑到规模,同时BigDecimal#compareTo做.
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |