2017-02-10 112 views
-1

或者我需要使用哪种类型? 我有串,我尝试将其转换为双C++,如何从字符串中获得正确的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个数字(含空格)

+1

该值是正确的,它只是一个关于你如何呈现*的问题,以及如何显示*值。 *你如何显示数值? –

+0

其实你已经从字符串中获得了正确的double值。 –

+0

使用您使用的格式字符串,结果是正确的。 [在这里阅读有关格式字符串的更多信息](https://msdn.microsoft.com/en-us/library/56e442dc.aspx)。 –

回答

1

当你写用printf,你可以指定要使用的显著的位数[小数] LF。

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

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

我使用CString :: Format。我需要显示它没有拖尾零,也保留9位数字(在空的地方空格)。我编辑了帖子以获得更多细节 –

+0

或许是“%9.5f”? – axalis

0

CString::Format

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

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

相关问题