#AB02. 保留x位小数与四舍五入

保留x位小数与四舍五入

当前没有测试数据。

保留xx位小数

  • • 头文件:#include<iostream>#include<iomanip>
  • • 比赛环境中,你可以直接使用万能头文件,#include<bits/stdc++.h>,这包含了上面两个头文件。
  • • 保留 位小数输出语句:cout << fixed << setprecision(x) << a;

现在的出题人一般都不会说四舍五入,而是用精度控制,比如相对或绝对误差在10610^{-6}(即0.0000010.000001 )以内就算对,此时你保留77位小数就肯定够了。

但是仍然有很多远古题会说到固定的小数位数四舍五入,这里我们单独说一下。

关于四舍五入

如果题目说保留 xx 位小数,那么就按照上面方式输出就可以了。

但是需要注意的是,这种方式并不是我们直观中的四舍五入。

对于 44 舍和 66 入的部分是没有问题的,对于舍入位是 55,且后面还有大于 00 的数位时也是没有问题的。但如果舍入位是 且后没有其他数了,那么有可能会有两个小问题。

如果是 double 类型可以精确储存的数

那么会舍入到最接近的偶数数位,比如在保留 00 位小数的情况下:

  • 0.50.5 -> 00
  • 1.51.5 ->22
  • 2.52.5->22
  • 3.53.5->44

保留 22 位小数的情况下:

  • 1.1251.125 ->1.121.12
  • 1.3751.375->1.381.38

如果是 double 类型无法无法精确储存的数

实际上储存的数可能会有一点点偏差,也会造成和我们所想不同。 比如如果输入1.1151.115,那么保留22位小数输出的会是1.111.11,因为保留2020位小数输出后,我们会发现实际储存的数大概是,执行的自然是44舍操作。