21xrx.com
2025-03-28 05:51:17 Friday
文章检索 我的文章 写文章
C++如何保留两位小数输出
2023-07-05 08:40:18 深夜i     28     0
C++ 保留 两位小数 输出

在使用 C++ 进行数值计算时,经常需要对计算结果进行格式化输出,其中一种常见的需求是保留两位小数输出。下面介绍几种实现方法。

方法一:使用 iomanip 头文件中的 setprecision 函数

iomaicp 头文件提供了一系列用于格式化输出的函数和类,其中 setprecision 函数可以设置浮点数的输出精度。具体用法如下:

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
  double num = 1.23456789;
  cout << setprecision(2) << fixed << num << endl; //输出1.23
  return 0;
}

其中,setprecision 函数指定浮点数输出的精度为 2,fixed 关键字用于固定小数点后的位数,避免科学计数法的出现。

方法二:使用字符串流输出

C++ 中的字符串流 stringstream 可以将浮点数转换成字符串,并且可以通过设置精度保留数字的位数。示例如下:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
  double num = 1.23456789;
  stringstream ss;
  ss << fixed << setprecision(2) << num;
  string str;
  ss >> str;
  cout << str << endl; // 输出 1.23
  return 0;
}

其中,setprecision 函数仍然通过 iomaicp 头文件引入,fixed 关键字用于固定小数点后的位数。将浮点数写入待转换的字符串流中,再从字符串流中读取字符串即可。

方法三:手动处理字符串输出

手动处理字符串输出的方式相对于前两种方案来说不太简便,但也有一定的灵活性,并可以根据具体情况进行调整。示例如下:

#include <iostream>
#include <string>
using namespace std;
int main()
{
  double num = 1.23456789;
  string str_num = to_string(num);
  int pos = str_num.find('.');
  if (pos != string::npos){
    str_num = str_num.substr(0, pos+3);
  }
  cout << str_num << endl; // 输出 1.23
  return 0;
}

该方案利用了 to_string 函数将浮点数转换成字符串,然后通过截取子字符串的方式保留指定位数的小数位数。由于使用了字符串处理函数,该方案需要包含 string 头文件。

  
  

评论区

请求出错了