输出除法结果包括小数点后的数字 - Qt

时间:2018-03-09 10:05:44

标签: c++ qt qt5

我很抱歉,如果它已在这里得到解答,但我找不到我想要的确切解决方案。

我试图输出两个变量除法的结果,这个变量是不断变化的。结果可能会在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位数。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用具有特定格式选项的QString::number()函数(两位精度)。例如:

auto s = QString::number(100.12914235234523, 'f', 2); // Gives "100.13"

此外,如果使用浮点数,最好将它们与浮点数相乘。即您需要使用100.0而不是整数值100来执行计算。