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.
Casting a non-floating-point value to floating-point and then passing it to Math.round, Math.ceil, or
Math.floor is silly because the result will always be the original value.
These operations are silly with any constant value: Math.abs, Math.ceil, Math.floor, Math.rint,
Math.round.
And these oprations are silly with certain constant values:
| Operation | Value |
|---|---|
acos |
0.0 or 1.0 |
asin |
0.0 or 1.0 |
atan |
0.0 or 1.0 |
atan2 |
0.0 |
cbrt |
0.0 or 1.0 |
cos |
0.0 |
cosh |
0.0 |
exp |
0.0 or 1.0 |
expm1 |
0.0 |
log |
0.0 or 1.0 |
log10 |
0.0 or 1.0 |
sin |
0.0 |
sinh |
0.0 |
sqrt |
0.0 or 1.0 |
tan |
0.0 |
tanh |
0.0 |
toDegrees |
0.0 or 1.0 |
toRadians |
0.0 |
public void doMath(int a) {
double floor = Math.floor((double)a); // Noncompliant
double ceiling = Math.ceil(4.2); // Noncompliant
double arcTan = Math.atan(0.0); // Noncompliant
}