浮点数内存表示方法
2015-08-01 12:34
411 查看
浮点数7位有效数字。 双精度数16位有效数字。 浮点数取值范围: 负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。 双精度数取值范围: 负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。 C/C++中浮点数的表示遵循IEEE 754标准。 一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M(如下)。 Floating S--------E-------M 1位-----8位-----23位 Double S--------E-------M 1位-----11位----52位 十进制数的换算计算公式为(n^m表示n的m次幂,B表示前面的数字是二进制): S * 2^(E-127) * (1.M)B 浮点数的精度取决于尾数部分。尾数部分的位数越多,能够表示的有效数字越多。 单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。 双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。 另外: 如果你在PI值的有效位后增加数字的话,结果是不会变化的,由于PI值是以常数方式赋值,可以在常数后面加个'f',如PI = 3.1415926f;否则编译器会先把常数当作double类型,然后再截断后面的值变为浮点值,这样的话,就有可能PI的值会有不同,造成你看到的现象。
相关文章推荐
- iOS 文字属性字典
- 企业互联网服务介绍
- DirectUI界面编程(六)实现右键弹出菜单
- DirectUI界面编程(六)实现右键弹出菜单
- 计算指数函数的算法
- C++ 管道
- 拓扑排序
- DirectUI界面编程(六)实现右键弹出菜单
- C++ 管道
- Hdu匹配题集
- html/css的网页制作
- poj_2478_欧拉函数
- SQLServer权限
- android 底部tabview模板
- 状态压缩DP总结【POJ3254】【POJ1185】【POJ3311】【HDU3001】【POJ2288】【ZOJ4257】【POJ2411】【HDU3681】
- Leetcode #212 Word Search II
- Sql常见函数大全
- 【Qt OpenGL教程】01:创建一个OpenGL窗口
- 日期与字符串之间的转换
- 两种计算自然对数的算法比较