• 实战c++中的string系列--指定浮点数有效数字并转为string


    上一篇博客讲了好几种方法进行number到string的转换,这里再单独说一下float或是double到string的转换。

    还是处于控件显示的原因。比方说要显示文件的大小,我们从server能够获得这个文件的总bytes。这样就须要我们依据实际情况是显示bytes、kb、mb等单位。

    经常使用的做法就是把num_bytes/1024,这个时候往往会得到浮点型。浮点型转string也没问题,可是假设你须要保留这个浮点型的一位或是几位小数,怎么操作会方便快捷呢?

    你进行了相关搜索。可是非常多人给你的回答都是要么使用cout, 要么使用printf进行格式化输出。

    我们使用的是stringstream

    Stringstreams allow manipulators and locales to customize the result of these operations so you can easily change the format of the resulting string

    #include <iomanip>
    #include <locale>
    #include <sstream>
    #include <string> // this should be already included in <sstream>
    
    // Defining own numeric facet:
    class WithComma: public numpunct<char> // class for decimal numbers using comma instead of point
    {
        protected:
            char do_decimal_point() const { return ','; } // change the decimal separator
    };
    
    // Conversion code:
    
    double Number = 0.12;           // Number to convert to string
    
    ostringstream Convert;
    
    locale MyLocale(  locale(), new WithComma);// Crate customized locale
    
    Convert.imbue(MyLocale);       // Imbue the custom locale to the stringstream
    
    Convert << fixed << setprecision(3) << Number; // Use some manipulators
    
    string Result = Convert.str(); // Give the result to the string
    
    // Result is now equal to "0,120"

    setprecision
    控制输出流显示浮点数的有效数字个数 。假设和fixed合用的话,能够控制小数点右面的位数
    可是这里须要注意的是头文件:

    #include <iomanip>
  • 相关阅读:
    Android开发之无线遥控器
    那些有意思的代码
    更改Android编译软件版本(make/gcc/bision)
    ubuntu16.04安装virtualbox5.1失败 gcc:error:unrecognized command line option ‘-fstack-protector-strong’
    Android编译环境折腾记
    BM25相关度打分公式
    javascript作用域
    javascript 中关于call方法的详解。
    JavaScript RegExp 对象
    vue runtime 问题
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7159938.html
Copyright © 2020-2023  润新知