0

给定的浮点值的精度说明符printf允许程序员指定要在小数点打印的位数。是否有类似的精度说明符,允许程序员指定小数点printf多少位来舍入该值?

例如,如果我传递157到,如果我告诉它四舍五入到最接近的十printf,我希望将值160打印到屏幕上。

4

4 回答 4

4

据我所知,没有办法printf做到这一点。您必须先手动舍入该值,然后再将其传递给printf. 例如:

printf("%d\n", myRound(157, 10));

int myRound(int x, int b) {
    return ((x + b/2) / b) * b;  // TODO: handling for overflow, etc.
}
于 2013-06-28T18:11:05.730 回答
3

printf不会更改数据,格式说明符仅指定其显示方式。如果你给它会以某种形式printf 157打印。157

查看 C数学库中的舍入函数以了解舍入函数。

于 2013-06-28T18:06:34.327 回答
1

不,您可能最接近的printf是使用科学记数法:

printf("%.1e\n", 157.0);

这将打印1.6e+02,这绝对不是你想要的。

于 2013-06-28T18:13:01.297 回答
0

我喜欢这个myRound(157, 10)解决方案,但我想我会添加:

printf("%d0\n", (n+5)/10);   // int n;
printf("%.0f0\n", x/10);     // double x; (fails for INF, NAN)
于 2013-06-28T20:41:19.067 回答