直接先上代码
double b;
cin>>b;
b = int((b*10)+0.5)/10.0;//四舍五入到小数点后一位
cout<<showpoint<<setprecision(2)<<b<<endl;
四舍五入通过在原来的数的基础上加上0.5(1-0.5)来实现,因为在int的强制转换时会向下取整。
小数点后N位则用先乘以10的N次,强制转换之后再除以10的N次后面跟上N个0。
然后再打印输出时要加上showpoint和setprecision(2)来避免输出过程中省略“0”,其中setprecision(n)表示输出小数点后n-1位。
比如如果是二舍三入到小数点后五位。
double b;
cin>>b;
b = int((b*100000)+0.7)/100000.00000;//二舍三入到小数点后五位
cout<<showpoint<<setprecision(6)<<b<<endl;
C++还有两个取整函数ceil()向上取整和floor() 向下取整