bugprone-incorrect-roundings

检查已知会导致错误舍入的模式的使用。程序员通常使用

(int)(double_expression + 0.5)

将 double 表达式舍入为整数。这种方法的问题在于

  1. 它不必要地慢。

  2. 它是错误的。数字 0.499999975(小于 0.5 的最小可表示浮点数)舍入为 1.0。对于负数来说,行为更糟,其中 -0.5f 和 -1.4f 都舍入为 0.0。