浮點數轉換為String字串(可設定精度)方法

躍動的風發表於2020-12-08

前一段時間寫程式碼用到這個,網上的方法都太古老了,來上個現代c++風格的,順便給自己記錄一下。

  • convertDoubleToString
#include<sstream>
#include<string>
#include<iomanip>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
    std::stringstream stream{};
    stream<<std::fixed<<std::setprecision(precision)<<value;
    return stream.str();
}

使用效果:


#include<sstream>
#include<string>
#include<iomanip>
#include<iostream>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
    std::stringstream stream{};
    stream<<std::fixed<<std::setprecision(precision)<<value;
    return stream.str();
}
int main(int argc, char *argv[])
{
    double value = 10.356486;
    std::cout<<convertDoubleToString(value,0)<<std::endl;
    std::cout<<convertDoubleToString(value,1)<<std::endl;
    std::cout<<convertDoubleToString(value,5)<<std::endl;
    std::cout<<convertDoubleToString(value,10)<<std::endl;

}

在這裡插入圖片描述

  • 解釋一下:
    setprecision(n):表示保留n位有效數字,其中最後一位是四捨五入之後的結果
    std::fixed表示固定位數,若去掉該標記則跑起來結果如下:
#include<sstream>
#include<string>
#include<iomanip>
#include<iostream>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
    std::stringstream stream{};
    stream<<std::setprecision(precision)<<value;
    return stream.str();
}
int main(int argc, char *argv[])
{
    double value = 10.356486;
    std::cout<<convertDoubleToString(value,0)<<std::endl;
    std::cout<<convertDoubleToString(value,1)<<std::endl;
    std::cout<<convertDoubleToString(value,5)<<std::endl;
    std::cout<<convertDoubleToString(value,10)<<std::endl;
}

在這裡插入圖片描述

相關文章