代码之家  ›  专栏  ›  技术社区  ›  Jérôme

长双到字符串

  •  2
  • Jérôme  · 技术社区  · 14 年前

    我在C++中开发,使用QT框架。

    我需要转换 long double 值转换为字符串(理想情况下为 QString ,但可能是其他原因)。

    到目前为止,我一直使用qstring::number()进行数字-gt;字符串转换,但 长双精度 类型。

    谢谢

    4 回复  |  直到 6 年前
        1
  •  2
  •   Bill    14 年前

    qString有一个静态函数,用于从std::string构造qString,因此whaties的答案可以重写为:

    #include <sstream>
    #include <QString>
    ...
    QString qStringFromLongDouble(const long double myLongDouble)
    {
      std::stringstream ss;
      ss << myLongDouble;
    
      return QString::fromStdString(ss.str());
    }
    
        2
  •  5
  •   wheaties    14 年前

    简单的:

    string convert(long double myLongDouble) {
        stringstream blah;
        blah << myLongDouble;
    
        return blah.str();
    }
    

    使用模板:

    template<class T> string convert(T _input) {
        stringstream blah;
        blah << _input;
    
        return blah.str();
    }
    
        3
  •  0
  •   Fred Larson    14 年前

    助推 lexical_cast 为此目的。它几乎将Wheaties提供的解决方案封装到类模板中。

        4
  •  0
  •   Piotr Borys    6 年前

    标记的答案不完整,将只保存6位小数。 应该是这样的:

    #include <sstream>
    #include <iomanip>
    #include <limits>
    
    QString longDoubleToString(long double value)
        {
        std::stringstream stream;
        stream << std::fixed << std::setprecision(std::numeric_limits<long double>::digits10 + 1) << value;
        return QString::fromStdString(stream.str());
        }