保留 x 位小数

方法 1

  • 头文件:#include <cstdio>
  • 语句: printf("%.xf", a);

方法 2

  • 头文件:#include<iostream>#include<iomanip>
  • 语句:cout << fixed << setprecision(x) << a;

注意

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

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

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

如果是 double 类型可以精确储存的数​,那么会舍入到最接近的偶数数位,比如在保留 0 位小数的情况下:

  • 0.5 -> 0
  • 1.5 -> 2
  • 2.5 -> 2
  • 3.5 -> 4

保留 2 位小数的情况下:

  • 1.125 -> 1.12
  • 1.375 -> 1.38

如果是 double 类型无法无法精确储存的数​,实际上储存的数可能会有一点点偏差,也会造成和我们所想不同。 比如如果输入 1.115,那么保留 2 位小数输出的会是 1.11,因为保留 20 位小数输出后,我们会发现实际储存的数大概是 1.11499999999999999112,执行的自然是 4 舍操作。

1 条评论

  • @ 2023-11-3 20:26:28

    保留 x 位小数

    方法 1

    • 头文件:#include <stdio.h>
    • 语句: printf("%.xf", a);
    • 1