【发布时间】:2011-08-21 21:38:42
【问题描述】:
我正在用 QT 编写程序。我想在 C++ 中将 double 转换为 Qstring。
【问题讨论】:
-
@Macmade,我是 QT 和 CPP 的新手。但我有一个 java 代码,所以我想转换成 cpp 用于 qt 应用程序。
我正在用 QT 编写程序。我想在 C++ 中将 double 转换为 Qstring。
【问题讨论】:
引用:
QString 提供了很多函数 将数字转换为字符串和 串成数字。见arg() 函数,setNum() 函数, number() 静态函数,以及 toInt()、toDouble() 和类似的 功能。
【讨论】:
使用QString的数字方法(文档为here):
double valueAsDouble = 1.2;
QString valueAsString = QString::number(valueAsDouble);
【讨论】:
std::stringstream ss; ss << std::setprecision( 12 ); ss << (double)value; 我如何在这个东西中标记代码块?
我会使用QLocale::toString() 而不是QString::number(),这样我就可以获得语言环境感知组分隔符,例如德语“1.234.567,89”。
【讨论】:
可以使用arg(),如下:
double dbl = 0.25874601;
QString str = QString("%1").arg(dbl);
这克服了其他函数的“固定精度”问题,例如:setNum() 和 number(),它们将生成随机数来完成定义的精度
【讨论】:
The conversion uses the default locale,默认情况下精度也是-1,而不是QString::number的6
基于@Kristian 的回答,我希望显示固定的小数位数。这可以通过QString::number(...) 函数中的其他参数来实现。例如,我想要 3 个小数位:
double value = 34.0495834;
QString strValue = QString::number(value, 'f', 3);
// strValue == "34.050"
'f' 指定十进制格式表示法(更多信息here,您也可以指定科学计数法),3 指定精度(小数位数)。可能已经在其他答案中链接,但可以找到有关QString::number 函数的更多信息here in the QString documentation
【讨论】: