解析C++浮動小数点のフォーマット表示


コードは以下の通りです。

    #include <stdlib.h> 
    #include <string> 
    #include <windows.h> 
    #include <stdio.h> 
    #include <iostream> 
    #include <limits> 
    #include <sstream> 
    using namespace std; 

    string do_fraction(long double val, int decplaces=3) 
    { 
        ostringstream  out; 
        char DECIMAL_POINT='.'; // ',' 
        int prec=numeric_limits<long double>::digits10; // 18 
        out.precision(prec);//  
        out<<val; 
        string str= out.str(); //  
        size_t n=str.find(DECIMAL_POINT); 
        if ((n!=string::npos) // ? 
            && (str.size()> n+decplaces)) // decplaces ? 
        { 
            str[n+decplaces]='\0';//  
        } 
        str.swap(string(str.c_str()));// nul  

        return str; 
    }