C++ 中实现四舍五入的简易方法
以前没怎么注意过 C++ 的输入输出以及四舍五入这种细枝末节的问题,但是做些竞赛题发现这些边角料用到的地方还很多.
这里记下 C++ 中实现四舍五入的库函数,自己实现小数点后任意位的四舍五入,以及通过控制输出来进行四舍五入.
相关库函数
double round(double x)四舍五入到相邻整数double floor(double x)向下取整double ceil(double x)向上取整double trunc(double x)向 0 取整
详细介绍见 CPP reference.
保留小数点后任意位数并四舍五入的实现
1 | double round(double num, int fig) |
iomanip 控制输出
C++ iomanip 头文件中包含对输入输出进行控制的相关工具.
以下操作符的作用均是持续的.
如果只是在输出时要求保留几位有效数字,使用 std::setpecision 是最方便的.
此操作符控制浮点数输出时显示的数字个数,会进行四舍五入.
该操作符影响之后的所有输出,直到再次使用 std::setpecision 为止.
当末尾最后几位为 0 时,0 是无法输出的.需要使用 std::showpoint.
如果是要保留小数点后多少位有效数字,可使用 ios::fixed 将小数点固定,该操作符更改浮点数的输入/输出的默认格式.
使用std::fixed 将小数点固定后,对此输出流对象 setpecision 的含义变为小数点后保留多少为有效数字,最后一次设置有效.
通常这些操作符的使用方法是作为流运算符的右参数,此时使用 std 命名空间中的函数
等效的简单方法是使用流对象的 setf 方法设置,此时操作符使用 ios 中的 flag.
1 | /** 输出 PI, 保留五位有效数字,四舍五入*/ |