关闭

小数点后的位数个数

标签: 小数点位数浮点数
386人阅读 评论(0) 收藏 举报
分类:

啥都不说了, 上代码吧...估计有一部分需要这个, 觉得这个方法最靠谱, 有些人说什么 sprintf ,纯属扯淡, sprintf过后, 发现截断了,只留下了6位,希望回答别人问题的时候,自己先验证下,再答复,别浪费彼此的时间!!!

 就写了个通用点的,希望能够给你们用得上吧。

 

/*不要超过16位,double的精度就到16 ,传入的double是0.xxxxxxx的,整数位自己处理去*/
int decimals(double temp , int precision)
{
    int length = precision;
    if(precision > 16) return -1;
    else{
        long value = temp*pow(10,precision);
        while(value%10 == 0){
            length--;
            value/=10;
        }
    }
    return length;
}

示例:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int decimals(double , int);
int main()
{
    double a = 0.12345678912345;
    printf("%d", decimals(a,16));
    return 0;
}


 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18747次
    • 积分:479
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:5篇
    • 译文:2篇
    • 评论:3条