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

新手上路,请多包涵

我有一个这样的部门:

 number / 1000.0

有时它会给出像 96.0000000001 这样的答案,有时除法会按预期工作。

我想将我的号码限制为最多两位小数,并且没有尾随零。

如果是 96.5500000001 它应该显示 96.55

如果是 96.4000000001 它应该显示 96.4

可以用这种方式格式化字符串吗?

我检查了文档,它提供了 ‘f’ 参数来指定小数位数,但这样尾随零仍然存在。这是我尝试过的:

 QString::number(number / 1000.0, 'f', 2)

但这给了我 96.4000000001 –> 96.40 而不是 96.4

有什么解决办法吗?我怎样才能以这种方式格式化?

原文由 Neaţu Ovidiu Gabriel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

文档 非常清楚您应该做什么:

还使用参数格式指定精度。对于“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"

原文由 László Papp 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题