日期:2014-05-19  浏览次数:21009 次

一个很简单的问题,关于浮点数的内存存放问题
1.
System.Int32   (Integer/int)   占4Bytes     范围是-2147483648   to   2147483647

2.
System.Single   (Single/float)   占4Bytes   范围是   -3.402823E+38   to   3.402823E+38
 
为啥同样是4bytes浮点数可以存放这么大,而整数却不能?



------解决方案--------------------
存储的方式不一样.
INT32存储的是实际直
Single 存储的是字符
------解决方案--------------------
因为浮点数是以减少了精度为代价的。
比方说,2147483647在浮点数里可能就是表示为2.147483E9这种形式,损失了精度来达到更大的范围。
------解决方案--------------------
譬如说有一个数:

一亿八千三百二十五万四千七百八十二。
如果用整型,储存的是完整的数值:一亿八千三百二十五万四千七百八十二
用浮点型,储存的是近似数:约一亿八千万。


所以很显然同样的大小,浮点数的范围比整型大。