21xrx.com
2024-11-05 19:00:04 Tuesday
登录
文章检索 我的文章 写文章
C++如何保留两位小数输出
2023-07-05 08:40:18 深夜i     --     --
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 头文件。

  
  

评论区

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