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

Posted

技术标签:

【中文标题】输出除法结果,包括小数点后的数字 - Qt【英文标题】:Output division result including digits after decimal - Qt 【发布时间】: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,谢谢。那解决了它。这是一个愚蠢的问题。您能否添加评论作为答案?我会接受的。 【参考方案1】:

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

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

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

【讨论】:

以上是关于输出除法结果,包括小数点后的数字 - Qt的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.x 中的除法 [重复]

计算器显示不了小数点后的数字是怎么了

php中除法取整的方法(round,ceil,floor)

qt怎么让qlineedit只能输入数字和小数点和正负号

小数第n位

EXCEL表格中,我想把一列数字做除法,保留小数点两位请问怎么做