编程语言中数据类型的范围,整数型的好理解,浮点数double和float的表示范围(单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308)是怎样计算出来的呢?求解答

解决方案 »

  1.   

    浮点数的组成结构
    符号位S_指数位E_尾数位M
    例如,一个float类型的数据占用4个字节共32位,其各个组成部分为:
    符号位(S):最高位(31位)为符号位,表示整个浮点数的正负,0为正,1为负
    指数位(E):23-30位共8位为指数位,这里指数的底数规定为2。并且指数位是以补码的形式来划分的(最高位为指数位的符号位,0为正,1为负)。另外,标准中还规定了,当指数位8位全0或全1的时候,浮点数为非正规形式,所以指数位真正范围为:-126~127。
    尾数位(M):0-22位共23位为尾数位,表示小数部分的尾数,即形式为1.M或0.M,至于什么时候是 1 什么时候是 0,则由指数和尾数共同决定。小数部分最高有效位是1的数被称为正规(规格化)形式。小数部分最高有效位是0的数被称为非正规(非规格化)形式,其他情况是特殊值。取值范围
    float和double的【取值范围】是由【指数的位数】来决定的,其中,负指数决定了浮点数所能表达的【绝对值最小】的非0数,而正指数决定了浮点数所能表达的【绝对值最大】的数,也即决定了浮点数的取值范围。
    S:符号位,E:指数位,M:尾数位
    float:S1_E8_M23,指数位有8位,指数的取值范围为-2^7~2^7-1(即-128~127)
        float的取值范围为-2^128 ~ +2^127(10^38级别的数)
    double:S1_E11_M52,指数位有11位,指取的取值数范围为-2^10~2^10-1(即-1024~1023)
        double的取值范围为-2^1024 ~ +2^1023(10^308级别的数)
      

  2.   

    Java 基础 之 数据类型   范围http://www.verejava.com/?id=1699255932129
      

  3.   


    double的取值范围类似操作,不过指数位是11位
      

  4.   

    浮点型是由符号位、指数位、小数位三部分组成,指数位代表了数字的位数范围,小数位代表了精度,楼主可以百度double类型的组成就了解了