Floating-Point Equality Comparison
ID |
java.float_equality_comparison |
Severity |
low |
Remediation Complexity |
trivial |
Remediation Risk |
low |
Remediation Effort |
low |
Resource |
Reliability |
Language |
Java |
Tags |
CWE:1025, reliability, suspicious-comparison |
Rationale
Due to IEEE 754 rounding, two floating-point computations that are mathematically equal may differ by a tiny epsilon. Direct equality comparison is therefore almost always wrong and can cause intermittent bugs that are difficult to reproduce.
// Bad - floating-point equality is unreliable
if (total == 0.3) {
applyDiscount();
}