啥都不说了, 上代码吧...估计有一部分需要这个, 觉得这个方法最靠谱, 有些人说什么 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;
}