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 |

## Noncompliant Code Example

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
}