解析浮点数的字符串

时间:2014-09-29 22:13:38

标签: c# parsing decimal

我正在读取XML文件并读取特定值10534360.9

当我解析字符串中的小数点(decimal.Parse(afNodes2[0][column1].InnerText))时,我得到10534360.9,但是当我解析浮点数(float.Parse(afNodes2[0][column1].InnerText))时,我得到1.053436E+07。< / p>

有人可以解释原因吗?

4 个答案:

答案 0 :(得分:3)

您正在看到&#34; E&#34;或者&#34;指数&#34;符号。

1.053436E+07相当于1.053436 x 10^710,534,360,这是.NET可以在System.Single 10,534,360.9float存储Single.ToString()的最精确方式数据类型(32位,7位精度)。

您看到它代表那种方式,因为它是{{1}}方法生成的默认格式,调试器使用该方法在监视屏幕,控制台等上显示值。

修改

可能不言而喻,但如果您想保留XML中原始值的精确度,您可以选择一种数据类型,以保留有关您的数字的更多信息:

答案 1 :(得分:1)

1.053436E + 07 == 10534360.9

这些数字是相同的,只是以不同的方式显示。

答案 2 :(得分:1)

因为float的精度为7位数。 十进制的精度为28位。

答案 3 :(得分:0)

在调试器中查看数据或通过.ToString显示数据时,默认情况下可能是formatted using scientific notation

  

返回值的一些示例是&#34; 100&#34;,&#34; -123,456,789&#34;,&#34; 123.45e + 6&#34;,&#34; 500&#34; ,&#34; 3.1416&#34;,&#34; 600&#34;,&#34; -0.123&#34;,&#34; -Infinity&#34;。

要将其格式化为精确输出,请使用R(往返)格式字符串:

myFloat.ToString("R");

http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx