Vid*_*nan 0 java sonarqube java-11
我有一段 Java 代码,其中 -
public boolean method1(Double d1, Double d2) {
if (d1.equals(d2)) {
//Some logic
return bool;
}
Run Code Online (Sandbox Code Playgroud)
语句 d1.equals(d2) 存在声纳违规,即“不应使用浮点值进行相等性测试”。链接: https: //rules.sonarsource.com/java/RSPEC-1244
在解释中,它讨论了使用 == 或 === 的重要性,但由于我使用的是 equals 方法,为什么它仍然显示为声纳违规?
==这与vs无关equals,而与 和double( Doubleandfloat和Float) 值很难确保它们完全 100% 相等有关,而不是相差 0.0000000000001。
声纳建议您执行类似的操作Math.abs(d1 - d2) < 0.0000001。