C++ 判断 float 或 double 数据小数点后位数的方法

2023-12-30 18:26:55

Method 1

#include <cmath>  
  
int countDecimalPlaces(double num) 
{  
    if (num == 0) return 0;  // 避免除以零错误  
    return std::floor(std::log10(std::abs(num - std::floor(num)))) + 1;  
}

Method 2

#include <string>  
#include <sstream>  
  
int countDecimalPlaces(double num) 
{  
    std::ostringstream oss;  
    oss << std::fixed << num;  // 保留固定的小数位数  
    std::string str = oss.str();  
    return str.find('.') - str.find('e') > 0 ? str.find('.') + 1 : str.find('.');  
}

Method 3

#include <cmath>  
  
int countDecimalPlaces(double num) 
{  
    if (num == 0) return 0;  // 避免除以零错误  
    return std::abs(std::modf(num, nullptr)) == 0 ? 0 : std::floor(std::log10(std::abs(std::modf(num, nullptr)))) + 1;  
}

文章来源:https://blog.csdn.net/guihunkun/article/details/135307923
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。