21xrx.com
2025-03-22 15:12:10 Saturday
文章检索 我的文章 写文章
C++浮点数位数调整
2023-06-22 01:21:35 深夜i     18     0
C++ 浮点数 位数调整 精度 格式化输出

C++浮点数是在内存中以二进制形式存储的,因此其位数是有限的。在进行一些高精度计算或者输出时,我们可能需要对浮点数的位数进行调整。

C++中提供了两个头文件 ,分别可以用来获取浮点数的精度和设置输出浮点数的精度。

获取浮点数精度:

#include <limits>
#include <iostream>
int main()
  std::cout << std::numeric_limits<float>::digits10 << std::endl; // 6
  std::cout << std::numeric_limits<double>::digits10 << std::endl; // 15
  std::cout << std::numeric_limits<long double>::digits10 << std::endl; // 18
  return 0;

以上代码可以分别获取float、double和long double类型的浮点数的精度。如上代码输出结果分别为6、15和18,它们分别对应单精度、双精度、扩展精度(80位)格式下的有效数字位数。

设置浮点数精度:

#include <iomanip>
#include <iostream>
int main() {
  float f = 1.23456789;
  double d = 1.234567890123456789;
  std::cout << std::fixed << std::setprecision(3) << f << std::endl; // 1.235
  std::cout << std::fixed << std::setprecision(5) << d << std::endl; // 1.23457
  return 0;
}

以上代码中,我们用std::fixed指定对浮点数进行固定点位的输出(即小数点后的位数不变),同时使用std::setprecision(n)指定输出的小数点后n位。上述代码最终输出:

1.235
1.23457

通过以上两种方式,我们可以方便地对C++浮点数进行位数调整,以满足不同的需求。

  
  

评论区

请求出错了