zoukankan      html  css  js  c++  java
  • C中浮点数转字符串

    求浮点数转换成字符串,如何才能获得比较正确的字符串。
    用printf("%f ", (float)5); 这种方式转换出来的结果是 5.000000 ,末尾都会带6位小数。

    控制精度在6位,虽然控制精度在6位,但并不希望输出时后面出现多余0。

    需要:

        精度控制 6 位,剔除多余占位零。

    printf和gcvt这两个函数多有些不太满足要求。


    实际想得到的结果
    float                  string
    ---------------------------------
    5                      "5.0"
    5.1                    "5.1"
    5.001                  "5.001"
    5.0000001              "5.0"

    现在的结果(-_-!!)
    float                  string
    ---------------------------------
    5                      "5.000000"
    5.1                    "5.100000"
    5.001                  "5.001000"
    5.0000001              "5.000000"

    大致实现方法

      1、正常格式化浮点为字符
      2、清除多余的占位零

    char * float2str(float val, int precision, char *buf)
    {
        char *cur, *end;
        
        sprintf(buf, "%.6f", val);
        if (precision < 6) {
            cur = buf + strlen(buf) - 1;
            end = cur - 6 + precision; 
            while ((cur > end) && (*cur == '0')) {
                *cur = '';
                cur--;
            }
        }
        
        return buf;
    }
    
    int main(int argc, char** argv)
    {
        char buf[128];
        
        printf("%s
    ", float2str((float)5, 2, buf));   
        printf("%s
    ", float2str((float)5.1, 2, buf));   
        printf("%s
    ", float2str((float)5.12, 2, buf));   
        printf("%s
    ", float2str((float)5.123, 2, buf));   
        printf("%s
    ", float2str((float)5.12345678, 2, buf));   
    
        return (EXIT_SUCCESS);
    }

    运行结果比较满意,达到想要的效果

  • 相关阅读:
    [Android应用开发] 01.快速入门
    [wordpress使用]004_导入多媒体
    【Python3爬虫】使用异步协程编写爬虫
    【Python3爬虫】斗鱼弹幕爬虫
    Pycharm2018永久破解的办法
    【Python3爬虫】大众点评爬虫(破解CSS反爬)
    【Python3爬虫】用Python发送天气预报邮件
    【Python3爬虫】猫眼电影爬虫(破解字符集反爬)
    【Python3爬虫】微博用户爬虫
    【Python3爬虫】拉勾网爬虫
  • 原文地址:https://www.cnblogs.com/gleam/p/3607984.html
Copyright © 2011-2022 走看看