本文主要是介绍浮点数(单精度、双精度数)的有效位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
浮点数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(如下)。
Float
S--------E-------M
1位-----8位-----23位
Double
S--------E-------M
1位-----11位----52位
浮点数的精度取决于尾数部分。尾数部分的位数越多,能够表示的有效数字越多。
单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。
双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。
浮点数的标准二进制数值表示:
IEEE 754
短浮点数和有符号整型一样,符号位是1,表示负数;符号位是0,表示正数。
指数位部分既可表示正指数又可表示负指数。因此,指数位部分通过实际指数值加上偏差值127的方法计算。例如:实际指数值为-15,该浮点数的指数位值是112。由于偏差值的作用,实际指数值的有效范围为-127到128。
有效位表示标准二进制数值的分数部分。标准二进制数值大于1小于10并包含小数部分。小数部分很重要,因此被包含在浮点数格式中。标准值通常都大于1,因此格式中无需包含1。
下文为将一个十进制数字转换成短浮点数值的实例。
实例: 22.625
22 = (10110)2
0.625 = (.101)2
10110.101 = 1.0110101 x 2^4 (标准值)
符号位 = 0 (正数)
指数位 = 4 + 127 = 131 = 10000011
有效位 = 0110101[16个零]
短浮点数 = 0 10000011 0110101[16个零]
如果将一个短浮点数值转换成十进制数值,应用如等式1-1。
数值 = (-1)^符号位x [1 + (有效位/2^23)] x 2^(指数位 –127)
这篇关于浮点数(单精度、双精度数)的有效位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!