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

标签: c++ qt qt5


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多