C++ printf(“%.0f”,x);C++!我的尝试正确吗?

C++ printf(“%.0f”,x);C++!我的尝试正确吗?,c++,formatting,double,rounding,precision,C++,Formatting,Double,Rounding,Precision,我可以使用: double x=13.6; printf("%d",(int)round(x)); 或者: double x=13.6; printf("%.0f",x); 两者的输出相同,即14 我不知道这个替代方法是如何舍入到最接近的整数的!这个能通过所有的测试吗 有人能帮我理解替代代码的工作流程吗?我不认为这是替代代码。round函数根据可进一步处理(数字)的输入类型返回数字输出。你所做的就是打印号码。如果这是你唯一的预期用途,那么你有了另一个选

我可以使用:

double x=13.6;
printf("%d",(int)round(x));
或者:

double x=13.6;
printf("%.0f",x);
两者的输出相同,即14

我不知道这个替代方法是如何舍入到最接近的整数的!这个能通过所有的测试吗


有人能帮我理解替代代码的工作流程吗?

我不认为这是替代代码。round函数根据可进一步处理(数字)的输入类型返回数字输出。你所做的就是打印号码。如果这是你唯一的预期用途,那么你有了另一个选择,耶

至于可靠性,printf()在所有情况下都能工作。据cplusplus.com报道

格式说明符遵循此原型:[请参阅下面的兼容性说明] %[标志][宽度][精度][长度]说明符

由于您希望精度为0位小数,因此请求舍入到最接近的整数


我建议在下次发布之前查找函数定义。

谢谢,但仍然不理解为什么printf是(“%.0f”,x);返回14而不是13。它只需删除浮点值中的小数。@AnkitSrivastava,因为
printf()
设计用于根据格式字符串指定的精度(或缺少精度)对浮点值进行舍入。