21xrx.com
2024-12-22 22:30:38 Sunday
登录
文章检索 我的文章 写文章
C++中保留小数的方法
2023-07-06 09:14:13 深夜i     --     --
C++ 保留 小数 方法

在C++中,保留小数有很多方法,以下列举了一些常用的方法。

1. 使用iomanip头文件中的setprecision函数

setprecision函数用于设置输出流中的精度,可以将小数输出时保留指定位数的小数。例如,要保留2位小数,可以使用以下代码:


#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

  double a = 3.141592653589;

  cout << setprecision(2) << fixed << a << endl; //输出3.14

  return 0;

}

需要注意的是,setprecision设置的精度包括小数点后的位数,所以setprecision(2)表示保留2位小数,实际输出的精度是小数点后的两位,如果小数点后的位数不足2位,则会使用0进行补齐。

2. 使用cmath头文件中的round函数

round函数用于对浮点数四舍五入取整,可以在保留小数的同时将小数进行四舍五入。例如,要保留2位小数并四舍五入,可以使用以下代码:


#include <iostream>

#include <cmath>

using namespace std;

int main()

{

  double a = 3.141592653589;

  cout << round(a * 100) / 100 << endl; //输出3.14

  return 0;

}

需要注意的是,round函数将浮点数四舍五入取整后得到的结果还是浮点数,因此需要将结果除以10的n次方(n为保留小数点后的位数)后得到保留小数的结果。

3. 使用sstream头文件中的字符串流

字符串流可以将任何类型的数据转换成字符串,在字符串中添加小数点和小数位数后,再转换回浮点数即可实现保留小数的效果。例如,要保留2位小数可以使用以下代码:


#include <iostream>

#include <sstream>

using namespace std;

int main()

{

  double a = 3.141592653589;

  stringstream ss;

  ss << fixed << setprecision(2) << a; //将a转换成字符串并保留2位小数

  string s = ss.str();

  double b = stod(s); //将字符串转换成浮点数

  cout << b << endl;//输出3.14

  return 0;

}

需要注意的是,stringstream中的precision和setprecision的含义是不一样的,stringstream中的precision表示整数和小数位的总长度,setprecision表示小数位的长度。因此在使用stringstream时需要注意二者的区别。

以上是C++中保留小数的方法,根据不同情况可以选择不同的方法。需要根据实际需求进行选择。

  
  

评论区

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