【发布时间】:2018-03-09 10:05:44
【问题描述】:
很抱歉,如果这里已经回答,但我找不到我正在寻找的确切解决方案。
我正在尝试输出两个不断变化的变量相除的结果。结果可能在 0.00 到 100.12314235234523 之间变化(不完全是这样,我只是想给你一个想法)。我想只打印小数点后2位的结果,如果小数点后没有任何内容,它应该在小数点后打印2个零。
例如:
10 / 5 = 2.00
23 / 6 = 3.83
我不需要对结果进行四舍五入,例如,如果输出是:73.4869999,我不需要它是 73.49,我可以使用 73.48。
到目前为止我写的是:
packet_loss[2]->setText(QString("%1%2%3").arg(((data.packet_loss_tx) * 100) / data.packets_tx).
arg(locale.decimalPoint()).
arg((((data.packet_loss_tx) * 100) % data.packets_tx), 2, 10, QChar('0')));
但这会打印小数点后的所有值。我可以将这部分arg((((data.packet_loss_tx) * 100) % data.packets_tx) 划分为 10、100 或 1000,以减少小数点后的小数位数,但这是一个每秒变化的变量。因此,如果输出为小数点后 3 位,我将其除以 10,我将得到正确的输出,但下一个值可能是小数点后 5 位,除以 10 将得到小数点后 4 位。我希望最终输出只显示小数点后 2 位。
【问题讨论】:
-
QString::number(100.12914235234523, 'f', 2)会给你“100.13”。 -
@vahancho,如果我这样写代码:
QString::number(((data.packet_loss_tx) * 100) / data.packets_tx), 'f', 2),它只会给我xxx.00。它没有给我小数点后的实际数字。 -
不是因为你把它乘以整数值(100)吗?尝试改用 100.0。
-
@vahancho,谢谢。那解决了它。这是一个愚蠢的问题。您能否添加评论作为答案?我会接受的。