由于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之后该数是不是整数了,从而获得小数位数