java – 为什么anyValue%1“愚蠢数学”在声纳中anyValue是双倍?

前端之家收集整理的这篇文章主要介绍了java – 为什么anyValue%1“愚蠢数学”在声纳中anyValue是双倍?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
SonarQube在我的代码中引发了主要的违规 Silly math should not be performed.说明说

Certain math operations are just silly and should not be performed
because their results are predictable.

In particular,anyValue % 1 is silly because it will always return 0.

在我的情况下,anyValue是一个双倍.这对我来说是as intended.以下是实际代码

double v = Double.parseDouble(Utils.formatDouble(Double.valueOf(value.getValue()),accuracy.intValue()));
boolean negative = v < 0;
v = Math.abs(v);
long deg = (long) Math.floor(v);

v = (v % 1) * 60;

分析仪假设我的变量是一个int(这是他们的错误)?还是我还缺少别的东西?

解决方法

这确实是一个错误,所以非常感谢报告.

问题在这里代码https://github.com/SonarSource/sonar-java/blob/3.9/java-checks/src/main/java/org/sonar/java/checks/ConstantMathCheck.java#L117

其中绝对没有检查%操作符的左操作数的类型.

我刚刚提交了以下错误来处理:https://jira.sonarsource.com/browse/SONARJAVA-1457

猜你在找的Java相关文章