如何将以指数形式表示十进制数的字符串转换为在Qt中浮动?

时间:2010-09-16 20:39:01

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

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

3 个答案:

答案 0 :(得分:3)

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

数字字符串中的附加空格并不重要,但其他字符也可以。

答案 1 :(得分:1)

value = 3.91e+01;
double doubleValue;
stringstream valuestream(value);
valuestream >> doubleValue;

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

答案 2 :(得分:0)

使用QString::toDouble

示例:

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