【问题标题】:How to convert a string representing decimal number in exponential form to float in Qt?如何将表示以指数形式表示的十进制数的字符串转换为Qt中的浮点数?
【发布时间】:2011-04-13 10:27:17
【问题描述】:

我在一个以指数形式表示的文本文件中有一些十进制数字,例如:144.2e-3。我想将值存储在浮点数中。在 qt 中,当我直接使用“number.toFloat()”方法时,它返回“0”。请帮忙。

【问题讨论】:

    标签: c++ qt string type-conversion qstring


    【解决方案1】:
    value = 3.91e+01;
    double doubleValue;
    stringstream valuestream(value);
    valuestream >> doubleValue;
    

    使用字符串流,您可以将指数数转换为我们需要的数据类型。

    【讨论】:

      【解决方案2】:

      toFloat() 应该可以工作。检查您的字符串是否仅包含数字。如果字符串还包含其他内容,例如"144.2e-3 a",则 toFloat() 返回 0。请注意,字符串中的其他数字也会导致转换失败,例如 QString("144.2e-3 100").toFloat() 将返回 0。

      数字字符串中的额外空格无关紧要,但其他字符可以。

      【讨论】:

      • 我使用的是 QString::toDouble。 QString::toFloat() 直接工作。谢谢。
      【解决方案3】:

      使用QString::toDouble。

      例子:

      bool ok;
      float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
      

      【讨论】:

      • 我使用的是 QString::toDouble。 QString::toFloat() 直接工作。谢谢。
      猜你喜欢
      • 2016-03-04
      • 2021-02-12
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2020-12-03
      • 2016-01-10
      • 1970-01-01
      相关资源
      最近更新 更多