C ++,如何从字符串中获取正确的double值?

时间:2017-02-10 09:02:14

标签: c++ mfc double atof

或者我需要使用哪种类型? 我有字符串,我尝试将其转换为双

NFR_File.ReadString(sVal); // sVal = "   0,00003"
dbl = _wtof(sVal);

并获得:

3.0000000000000001e-05

我需要0,00003,因为那时我应该把它写成文件" 0,00003"但不是3e-05。

如果数字大于0,000,则一切正常。

显示:

sOutput.Format(_T("%9g"),dbl);
NFP1_File.WriteString(sOutput);

我需要它而没有尾随零并且还保留9位数字(带空格)

3 个答案:

答案 0 :(得分:1)

使用printf编写时,可以使用。[decimals] lf指定所需的有效位数。

例如,在您的情况下,您希望以5位小数打印,因此您应该使用

printf("%.5f", yourNumber);

答案 1 :(得分:0)

如果你可以使用C ++ 11

尝试使用http://en.cppreference.com/w/cpp/string/basic_string/to_string

std::string to_string( double value );

答案 2 :(得分:0)

CString::Format

  

调用此成员函数将格式化数据写入CString,其方式与sprintf将数据格式化为C样式字符数组的方式相同。

与c sprintf格式相同。您可以查看其他答案的格式用法。