我正在尝试以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