我正在尝试以2点精度打印数字684.545007,因为684.54之后的数字将被截断(而不是四舍五入)。

当我使用

var = 684.545007;
printf("%.2f\n",var);

它输出684.55,但是我想得到的是684.54

有谁知道我该如何纠正?

最佳答案

您正在寻找的是截断。这应该有效(至少对于不是很大的数字):

printf(".2f", ((int)(100 * var)) / 100.0);

转换为整数会截断小数部分。

在C++ 11或C99中,您可以为此目的使用专用函数 trunc (来自 header <cmath><math.h>。这将避免限制为适合整数类型的值。
std::trunc(100 * var) / 100     // no need for casts

09-30 21:56