llvm / llvm-project / 37d72991c136244fe53be02f5af0ad643247a1e6 / . / clang-tools-extra / docs / clang-tidy / checks / bugprone-incorrect-roundings.rst

.. title:: clang-tidy - bugprone-incorrect-roundings | |

bugprone-incorrect-roundings | |

============================ | |

Checks the usage of patterns known to produce incorrect rounding. | |

Programmers often use:: | |

(int)(double_expression + 0.5) | |

to round the double expression to an integer. The problem with this: | |

1. It is unnecessarily slow. | |

2. It is incorrect. The number 0.499999975 (smallest representable float | |

number below 0.5) rounds to 1.0. Even worse behavior for negative | |

numbers where both -0.5f and -1.4f both round to 0.0. |