| 10640 | |
| 10641 | template<typename T> |
| 10642 | std::string fpToString( T value, int precision ) { |
| 10643 | if (std::isnan(value)) { |
| 10644 | return "nan"; |
| 10645 | } |
| 10646 | |
| 10647 | ReusableStringStream rss; |
| 10648 | rss << std::setprecision( precision ) |
| 10649 | << std::fixed |
| 10650 | << value; |
| 10651 | std::string d = rss.str(); |
| 10652 | std::size_t i = d.find_last_not_of( '0' ); |
| 10653 | if( i != std::string::npos && i != d.size()-1 ) { |
| 10654 | if( d[i] == '.' ) |
| 10655 | i++; |
| 10656 | d = d.substr( 0, i+1 ); |
| 10657 | } |
| 10658 | return d; |
| 10659 | } |
| 10660 | |
| 10661 | //// ======================================================= //// |
| 10662 | // |