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 );
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
格式相同。您可以查看其他答案的格式用法。
或者我需要使用哪种类型? 我有字符串,我尝试将其转换为 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 );
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
格式相同。您可以查看其他答案的格式用法。