Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 四舍五入至小数点后2位_C++_Double_Decimal - Fatal编程技术网

C++ 四舍五入至小数点后2位

C++ 四舍五入至小数点后2位,c++,double,decimal,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); 如何正确输出值?您可以使用printf/sprintf或其他类

我使用以下方法将我的值四舍五入到小数点后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);

如何正确输出值?

您可以使用printf/sprintf或其他类似函数。下面的代码将浮点值格式化为小数后的两位数。有关更多格式信息,请参阅printf手册

float f = 1.234567
printf("%.2f\n", f);

这是因为
std::setprecision
不设置小数点后的数字,但如果不将浮点格式更改为小数点后使用固定数量的数字,则设置有效数字。要更改格式,您必须在输出流中输入:

double a = 16.6;
std::cout << std::fixed << std::setprecision(2) << a << std::endl;
双a=16.6;

标准::cout来自特雷弗·博伊德·史密斯的评论:


如果您对Prtff和朋友过敏,则在<>代码>中包含类型安全的C++版本,包括,您可以使用:

float f=1.234567;

难道你不需要自己做舍入,除非你为了自己的目的需要舍入。无论你用什么来设置位数,都应该对输出进行四舍五入。我最近写过这个话题。[检查]![1 ] [ 1 ]:仅仅因为它是一个不受欢迎的答案并不意味着它是错误的。如果你对Prtff和朋友过敏,那么在中包含类型安全的C++版本,包括,你可以使用它:<代码>浮点F=1.234567;库特
double a = 16.6;
std::cout << std::fixed << std::setprecision(2) << a << std::endl;
float f = 1.234567;
cout << boost::format("%.2f") % f << endl;