21xrx.com
2024-09-20 00:31:34 Friday
登录
文章检索 我的文章 写文章
C++ 如何判断小数的位数?
2023-06-23 22:45:12 深夜i     --     --
C++ 判断 小数 位数

在C++中,判断小数的位数可以使用以下两种方法:

方法一:字符串操作

首先将浮点数转换为字符串,然后遍历该字符串,找到小数点的位置,将小数点后面的位数与所需的位数比较即可。

示例代码:


#include <iostream>

#include <string>

int main()

{

  double num = 1.23456789;

  int decimalPlaces = 4; // 所需的小数位数

  std::string str = std::to_string(num);

  size_t pos = str.find('.'); // 查找小数点的位置

  int count = str.size() - pos - 1; // 计算小数位数

  std::cout << count << " decimal places" << std::endl;

  if (count >= decimalPlaces)

  

    std::cout << "The number has at least " << decimalPlaces << " decimal places" << std::endl;

  

  else

  

    std::cout << "The number does not have at least " << decimalPlaces << " decimal places" << std::endl;

  

  return 0;

}

输出结果:


8 decimal places

The number does not have at least 4 decimal places

方法二:数学运算

将浮点数减去它的整数部分,得到它的小数部分。然后将小数部分乘以10的n次幂(n为所需小数位数),得到n位精度的整数,再将该整数模10,得到它的个位数,如果小于5,则所需小数位数不足,否则就满足所需小数位数。

示例代码:


#include <iostream>

#include <cmath>

int main()

{

  double num = 1.23456789;

  int decimalPlaces = 4;

  int n = pow(10, decimalPlaces);

  int integer = static_cast<int>(num * n);

  int remainder = integer % 10;

  std::cout << remainder << std::endl;

  if (remainder >= 5)

  

    std::cout << "The number has at least " << decimalPlaces << " decimal places" << std::endl;

  

  else

  

    std::cout << "The number does not have at least " << decimalPlaces << " decimal places" << std::endl;

  

  return 0;

}

输出结果:


8

The number does not have at least 4 decimal places

综上,以上两种方法都可以用来判断浮点数的小数位数,具体使用哪种方法取决于个人偏好和具体场景。

  
  

评论区

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