我很抱歉,如果它已在这里得到解答,但我找不到我想要的确切解决方案。
我试图输出两个变量除法的结果,这个变量是不断变化的。结果可能会在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位数。
答案 0 :(得分:1)
您可以尝试使用具有特定格式选项的QString::number()
函数(两位精度)。例如:
auto s = QString::number(100.12914235234523, 'f', 2); // Gives "100.13"
此外,如果使用浮点数,最好将它们与浮点数相乘。即您需要使用100.0而不是整数值100来执行计算。