...
Converting a floating-point value to a floating-point value of a smaller range and precision or to an integer type, or converting an integer type to a floating-point type, can result in a value that is not representable in the destination type and is undefined behavior on implementations that do not support Annex F.
Rule | Severity | Likelihood | Detectable | RepairableRemediation Cost | Priority | Level |
|---|---|---|---|---|---|---|
FLP34-C | Low | Unlikely | Yes | YesLow | P3 | L3 |
Automated Detection
Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Astrée |
| Supported Astrée reports all potential overflows resulting from floating-point conversions. | |||||||
| Compass/ROSE | Can detect some violations of this rule. However, it does not flag implicit casts, only explicit ones | ||||||||
| CodeSonar |
| LANG.TYPE.IAT | Inappropriate Assignment Type | ||||||
| MISRA_CAST (needs verification) | Can detect instances where implicit float conversion is involved: implicitly converting a complex expression with integer type to floating type, implicitly converting a double expression to narrower float type (may lose precision), implicitly converting a complex expression from | |||||||
| Cppcheck |
| floatConversionOverflow suspiciousFloatingPointCast | |||||||
| Cppcheck Premium |
| floatConversionOverflow suspiciousFloatingPointCast | |||||||
| Helix QAC |
| C4450, C4451, C4452, C4453, C4454, C4462, C4465 C++3011 | |||||||
| Klocwork |
| MISRA.CAST.FLOAT.WIDER | |||||||
| LDRA tool suite |
| 435 S, 93 S | Partially implemented | ||||||
| Parasoft C/C++test |
| CERT_C-FLP34-a CERT_C-FLP34-b | Avoid implicit conversions from wider to narrower floating type | ||||||
| PC-lint Plus |
| 735, 736, | Partially supported | ||||||
| Polyspace Bug Finder |
| Checks for float conversion overflow (rule partially covered) | |||||||
| PVS-Studio |
| V615, V2003, V2004 | |||||||
| TrustInSoft Analyzer |
| float_to_int | Exhaustively verified (see one compliant and one non-compliant example). |
...