[英]QString:number with maximum 2 decimal places without trailing zero
我有一个这样的部门:
number / 1000.0
该文档非常清楚您应该做什么:
参数格式也指定了精度。 对于“e”、“E”和“f”格式,精度表示小数点后的位数。 对于 'g' 和 'G' 格式,精度表示有效数字的最大数量(省略尾随零)。
因此,请使用“g”或“G”格式。
#include <QString>
#include <QDebug>
int main()
{
qDebug() << QString::number(96400.0000001 / 1000.0, 'g', 5);
qDebug() << QString::number(96550.0000001 / 1000.0, 'G', 5);
return 0;
}
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
qmake && make && ./main
"96.4"
"96.55"
这将始终以固定(非科学)表示法返回格式化数字,并且相当有效:
QString variableFormat(qreal n) { // assumes max precision of 2
int i = rint(n * 100.0);
if (i % 100)
return QString::number(n, 'f', i % 10 ? 2 : 1);
else
return QString::number(i / 100);
}
将
QString::number<\/code>与 'f' 和 'g' 一起使用。
首先,在 'f' 的输出上使用
toDouble()<\/code> ;
然后使用带有默认参数的
QString::number<\/code>或像这样的“g”。
QString::number(QString::number(number / 1000.0, 'f', 2).toDouble(), 'g', 10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.