我正在读取XML文件并读取特定值10534360.9
当我解析字符串中的小数点(decimal.Parse(afNodes2[0][column1].InnerText)
)时,我得到10534360.9
,但是当我解析浮点数(float.Parse(afNodes2[0][column1].InnerText)
)时,我得到1.053436E+07
。< / p>
有人可以解释原因吗?
答案 0 :(得分:3)
您正在看到&#34; E&#34;或者&#34;指数&#34;符号。
1.053436E+07
相当于1.053436 x 10^7
或10,534,360
,这是.NET可以在System.Single
10,534,360.9
中float
存储Single.ToString()
的最精确方式数据类型(32位,7位精度)。
您看到它代表那种方式,因为它是{{1}}方法生成的默认格式,调试器使用该方法在监视屏幕,控制台等上显示值。
修改强>
可能不言而喻,但如果您想保留XML中原始值的精确度,您可以选择一种数据类型,以保留有关您的数字的更多信息:
System.Double
(64位,15-16位)System.Decimal
(128位,28-29位有效数字)答案 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