21xrx.com
2024-11-08 21:58:21 Friday
登录
文章检索 我的文章 写文章
保留2位小数输出且不进行四舍五入的C++实现方法
2023-07-05 02:10:24 深夜i     --     --
C++ 保留2位小数 不进行四舍五入 实现方法

在C++中,输出一个保留两位小数的浮点数很简单,只需使用iomanip库中的setprecision函数并将参数设置为2即可。不过默认情况下,输出的浮点数会进行四舍五入,如果想要保留两位小数并不进行四舍五入,则需要进行一些额外的处理。

一种方法是使用ceil、floor等函数对浮点数进行上取整或下取整,然后再将结果乘以100后取整,最后再将结果除以100即可得到保留两位小数且不进行四舍五入的结果。以下是代码实现:


#include <iostream>

#include <cmath>

using namespace std;

int main() {

  double f = 1.23456789;

  int n = floor(f * 100 + 0.01);

  cout << n / 100.0 << endl;

  n = ceil(f * 100 - 0.01);

  cout << n / 100.0 << endl;

  return 0;

}

输出结果为:


1.23

1.23

另外一种方法是使用向0取整的方法,即直接将浮点数乘以100后取整,然后再将结果除以100即可得到保留两位小数且不进行四舍五入的结果。以下是代码实现:


#include <iostream>

#include <cmath>

using namespace std;

int main() {

  double f = 1.23456789;

  int n = (f >= 0 ? floor(f * 100) : ceil(f * 100));

  cout << n / 100.0 << endl;

  return 0;

}

输出结果为:


1.23

需要注意的是,这种方法只适用于在小数点后两位以外的数值非常小的情况,否则会出现一些精度问题。因此建议使用第一种方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复