21xrx.com
2025-04-16 09:08:32 Wednesday
文章检索 我的文章 写文章
C++ 如何保留两位小数并复原?
2023-06-22 09:49:55 深夜i     69     0
C++ 保留 两位小数 复原

在使用C++编写程序时,有时需要对浮点数进行精确的处理,比如需要保留两位小数。为了实现这个功能,可以采用以下两种方法:

1.使用iomanip库函数

iomanip是C++标准库提供的一个用于输出格式控制的头文件。它提供了一系列用于格式化输出的函数和控制符。其中,控制符setprecision可以用于设置输出精度。

示例代码:

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
  double num = 3.1415926;
  cout << setprecision(2) << fixed << num << endl; //保留两位小数
  cout << setprecision(6) << fixed << num << endl; //恢复六位小数
  return 0;
}

上述代码中,setprecision(2)表示将输出精度设置为小数点后两位。fixed表示将输出格式设置为固定小数位数输出。

2.使用字符串流ostringstream

ostringstream是C++标准库中的一个流类型,可以将各种数据类型格式化输出成字符串。通过使用ostringstream可以将浮点数转换成字符串,并保留指定的小数位数。将得到的字符串再通过字符串流istringstream,可以将字符串转换成浮点数。

示例代码:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
  double num = 3.1415926;
  ostringstream oss;
  oss << fixed << setprecision(2) << num; //保留两位小数
  string str = oss.str(); //转换成字符串
  cout << str << endl;
  istringstream iss(str); //将字符串转换成浮点数
  iss >> num;
  cout << num << endl; //复原六位小数
  return 0;
}

上述代码中,ostringstream中的ostringstream流将浮点数格式化输出成字符串。通过字符串流istringstream,可以将字符串转换成浮点数。 iss >> num;表示将字符串转换成num,恢复六位小数输出。

总结

使用C++可实现对浮点数的精确处理,其中借助iomanip库函数和字符串流ostringstream可以实现浮点数的保留和复原。

  
  

评论区