How to convert a string representing decimal number in exponential form to float in Qt?

前端 未结 3 845
抹茶落季
抹茶落季 2020-12-21 07:24

I have some decimal numbers in a text file represented in exponential form Eg: 144.2e-3. I want to store the values in float. In qt it returns \"0\" when i directly use the

相关标签:
3条回答
  • 2020-12-21 07:43
    value = 3.91e+01;
    double doubleValue;
    stringstream valuestream(value);
    valuestream >> doubleValue;
    

    Using a stringstream you can convert exponential number to the datatype we require.

    0 讨论(0)
  • 2020-12-21 07:48

    toFloat() should work. Check that your string contains only the number. If the string contains something else too, for example "144.2e-3 a", then the toFloat() returns 0. Note that also other numbers in the string will cause the conversion to fail, for example QString("144.2e-3 100").toFloat() will return 0.

    Additional whitespace in the number string doesn't matter, but other characters do.

    0 讨论(0)
  • 2020-12-21 08:08

    Use QString::toDouble.

    Example:

    bool ok;
    float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
    
    0 讨论(0)
提交回复
热议问题