## Why is this an issue?

Some mathematical operations are unnecessary and should not be performed because their results are predictable.

For instance, `anyValue % 1` will always return 0, as any integer value can be divided by 1 without remainder.

Similarly, casting a non-floating-point to a floating-point value and then passing it to `Math.round`, `Math.ceil`, or `Math.floor` is also unnecessary, as the result will always be the original value.

The following operations are unnecessary when given any constant value: `Math.abs`, `Math.ceil`, `Math.floor`, `Math.rint`, `Math.round`. Instead, use the result of the operation directly.

The following operations are unnecessary with certain constants and can be replaced by the result of the operation directly:

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

## How to fix it

Ask yourself if the questionable operation represents the desired calculation or if a value used is erroneous. If the calculation is correct, replace it with the result to avoid having to perform the unnecessary operation at runtime.

### Code examples

#### Noncompliant code example

    public void doMath(int a) {
      double res1 = Math.floor((double)a); // Noncompliant, the result will always be equal to '(double) a'
      double res2 = Math.ceil(4.2);        // Noncompliant, the result will always be 5.0
      double res3 = Math.atan(0.0);        // Noncompliant, the result will always be 0.0
    }

#### Compliant solution

    public void doMath(int a) {
      double res1 = a;    // Compliant
      double res2 = 5.0;  // Compliant
      double res3 = 0.0;  // Compliant
    }