bugprone-incorrect-roundings¶
检查已知会导致错误舍入的模式的使用。程序员通常使用
(int)(double_expression + 0.5)
将 double 表达式舍入为整数。这种方法的问题在于
它不必要地慢。
它是错误的。数字 0.499999975(小于 0.5 的最小可表示浮点数)舍入为 1.0。对于负数来说,行为更糟,其中 -0.5f 和 -1.4f 都舍入为 0.0。
检查已知会导致错误舍入的模式的使用。程序员通常使用
(int)(double_expression + 0.5)
将 double 表达式舍入为整数。这种方法的问题在于
它不必要地慢。
它是错误的。数字 0.499999975(小于 0.5 的最小可表示浮点数)舍入为 1.0。对于负数来说,行为更糟,其中 -0.5f 和 -1.4f 都舍入为 0.0。