如何判断float有几位小数?

由于float转CString小数部分不准确,我找了百度好多都没有解决。
后来我想能不能先判断float小数部分有几位(int x),
然后删去小数点前面的部分,再乘以x个10,那么整数部分就是小数了。

我这个float是从外部,用户输入得到的,我也不清楚是不是float一接收到用户输入就是不准确的还是说转换CString会变得不准确,我就得应该是因为转CString后才不准确。

如果是转CString后不准确,那么现在还没转CString,应该是准确的,现在提取出这个float的整数部分,再把它放到CString的小数部分去,就解决了。

那怎么判断float有几位小数呢?或者对float转CString有更好的方法或建议?我没有C币了,抱歉给不了悬赏,希望大家回帖帮忙,谢谢!

float和double总不太准,我直接改用了CString作为输入,已经解决了,谢谢。

#include <stdio.h>

int foo(float f)
{
    int i = 0;
    while (i++, f != (int)f) f *= 10;
    return i - 1;
}

int main()
{
    float f = 1.2345;
    printf("%d\n", foo(f));   
    return 0;
}

首先先分离出小数位,其次每次循环给小数位乘上10,如果一个数a是整数,那么就会满足
a - (int)a ==0;通过这种方式我们就能判断乘上10之后该数是不是整数了,从而获得小数位数