double d1 = 123123.12;double d2 = 234234.0;qDebug() << QString::number(d1,0,'f',2); // выводит 123123.12 - правильноqDebug() << QString::number(d2,0,'f',2); // выводит 234234.00 - а мне нужно 234234
C++ (Qt)template <class T>std::string number_to_string(T x, int precission = 6) { std::ostringstream oss; oss << std::setprecision(precission) << x; return oss.str();}
QString dbl2str(double value, int prec){ QString s = QString::number(value, 'f', prec); if (s.right(3)==".00") s.chop(3); return s;}
C++ (Qt)QString dbl2str(double value, int prec){ qlonglong intVal = value; return (intVal == value) ? QString::number(intVal) : QString::number(value, 'f', prec);}
C++ (Qt)template <unsigned N>struct epsilon { static constexpr double value = epsilon<N-1>::value/10.0;}; template <>struct epsilon<0> { static constexpr double value = 1.0;}; template <class T, unsigned N>QString tostr(T x) { if (fabs(x) < epsilon<N>::value) return QString::number(0); std::ostringstream oss; oss << std::setprecision(N) << x; return QString(oss.str().c_str());}
qDebug() << QString::number(d1,0,'g',2);
C++ (Qt)QString dbl2str(double value, int prec){ QString s1 = QString::number(value, 'f', prec); value = s1.toDouble(); qlonglong intVal = value; return (intVal == value) ? QString::number(intVal) : s1; }