【问题标题】:correct input value with toFloat() in Qt在 Qt 中使用 toFloat() 正确输入值
【发布时间】:2016-07-25 13:48:53
【问题描述】:

我想将文本更改为浮点数以便在 Qt 中进行计算

float test = ui.tableWidget->item(0, 1)->text().replace(",", ".", Qt::CaseSensitive).toFloat();

当我输入 2.86 时,实际上我在调试中看到了 test = 2.85999990。如何正确接收我输入的内容?

我可以用这个来展示

qDebug() << QString::number( test, 'f', 2 );

但我想要一个用于计算的值,而不是用于显示。

【问题讨论】:

  • 不幸的是浮点数不会给你更精确的结果。这就是它们的方式 - 您通常会得到最接近的数字,可以用 some size 浮点数表示。我建议阅读一些关于原因的维基百科(看看那里的方程式)。注意:double 可能会给您带来更好的结果。
  • @hauron:谢谢。是的,我已经与double 核对过,但结果只是如你所说的稍微好一点。我们有什么方法可以得到我们想要的吗?

标签: c++ qt format precision qstring


【解决方案1】:

正如@hauron 已经说过的,这是特定于格式但正常的行为。您可能想阅读this

此外,您还可以查看另一个答案here。如果适用,使用一些额外的库可能对您有用。

【讨论】:

  • 谢谢,我决定用double,之后的结果会四舍五入,看起来也ok。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多