舍入到2个小数点

时间:2013-01-30 03:34:07

标签: c++ double decimal

我使用以下内容将我的值舍入为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

如何正确输出值?

3 个答案:

答案 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;