21xrx.com
2024-11-22 07:22:21 Friday
登录
文章检索 我的文章 写文章
C++ 如何保留两位小数并复原?
2023-06-22 09:49:55 深夜i     --     --
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可以实现浮点数的保留和复原。

  
  

评论区

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