,我在一个XML文件中读取和阅读的10534360.9解析字符串的浮动
一个特定的值当我解析字符串为十进制(decimal.Parse(afNodes2[0][column1].InnerText)
)我得到10534360.9
,但是当我分析它的浮动( float.Parse(afNodes2[0][column1].InnerText)
)我得到1.053436E+07
。
有人可以解释为什么吗?
,我在一个XML文件中读取和阅读的10534360.9解析字符串的浮动
一个特定的值当我解析字符串为十进制(decimal.Parse(afNodes2[0][column1].InnerText)
)我得到10534360.9
,但是当我分析它的浮动( float.Parse(afNodes2[0][column1].InnerText)
)我得到1.053436E+07
。
有人可以解释为什么吗?
您看到在 “E” 或 “指数” 符号所代表的价值。
1.053436E+07
相当于1.053436 x 10^7
,或10,534,360
,这是最精确的方式.NET可以存储在System.Single
(float
)数据类型10,534,360.9
(32位,7位的精度)。
你看到它代表,那是因为它是由Single.ToString()
方法,其调试器使用到手表的屏幕,控制台上显示值所产生的默认格式等
编辑
它可能不言而喻,但如果你想保留在XML原始值的精确度,你可以选择可以保留你的号码更多信息的数据类型:
System.Double
(64位,15-16位)System.Decimal
(128位,28-29显著数字)1.053436E + 07 = = 10534360.9
这些数字都是一样的,只是显示方式不同。
因为float具有7位数的精度。 十进制数的精度为28位数。
当在调试器查看数据,或经由.ToString
显示它,默认情况下它可能是formatted using scientific notation:
返回值的一些例子是“100”,“-123,456,789”,“123.45e +6“,”500“,”3.1416“,”600“,”-0.123“和”-Infinity“。
要格式化为精确的输出,使用R
(往返)格式字符串:
myFloat.ToString("R");
http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
谢谢阿莫,十分赞赏。 – 2014-09-29 22:50:45