繁体   English   中英

"QString: 最多 2 位小数的数字,后面不带零"

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM