ZouHuiDong
2019-07-08 20:45
采纳率: 100%
浏览 3.0k

如何判断float有几位小数?

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

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

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • ZouHuiDong 2019-07-09 09:04
    已采纳

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

    打赏 评论
  • threenewbee 2019-07-08 22:13
    #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;
    }
    
    1 打赏 评论
  • weixin_29107343 2019-07-09 11:22

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

    打赏 评论

相关推荐 更多相似问题