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

C++, how to get right double value from string?

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

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

并得到:

3.0000000000000001e-05

我需要 0,00003,因为那样我应该将它作为“0,00003”而不是 3e-05 写入文件。

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

显示:

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

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

当您使用 printf 编写时,您可以使用 .[decimals]lf.

指定您想要的有效数字位数

例如,在你的情况下你想打印 5 位小数,所以你应该使用

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

如果你能使用C++11

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

std::string to_string( double value );

CString::Format

Call this member function to write formatted data to a CString in the same way that sprintf formats data into a C-style character array.

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