我使用以下内容将我的值舍入为2个小数点:
x = floor(num*100+0.5)/100;
这似乎工作正常;除了“16.60”之类的值,即“16.6”。
我想输出这个值,如“16.60”。
我输出值的方式如下:
cout setw(12) << round(payment);
我尝试了以下内容:
cout setw(12) << setprecision(2) << round(payment);
但那给了我像
这样的答案1.2e+02
如何正确输出值?
答案 0 :(得分:19)
这是因为std::setprecision
不设置小数点后的数字,但如果不更改浮点格式以使用小数点后的固定位数,则有效数字。要更改格式,您必须将std::fixed放入输出流:
double a = 16.6;
std::cout << std::fixed << std::setprecision(2) << a << std::endl;
答案 1 :(得分:10)
您可以使用printf / sprintf或其他类似功能。以下代码将浮点值格式化为小数点后的两位数。有关更多格式信息,请参阅printf手册
float f = 1.234567
printf("%.2f\n", f);
答案 2 :(得分:3)
来自Trevor Boyd Smith的评论:
如果您对printf和朋友过敏,可以使用
#include <boost/format.hpp>
中的类型安全C ++版本:
float f = 1.234567;
cout << boost::format("%.2f") % f << endl;