`
sakakokiya
  • 浏览: 490819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中float的取值范围是什么?

阅读更多
float占用4个字节,和int是一样,也就是32bit.
      第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管.
      第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-126到127.
     剩下的23位表示小数部分,这里23位表示了24位的数字,因为有一个默认的前导1(只有二进制才有这个特性).
     最后结果是:(-1)^(sign) * 1.f * 2^(exponent)
     这里:sign是符号位,f是23bit的小数部分,exponent是指数部分,最后表示范围是(因为正负数是对称的,这里只关心正数)
    2^(-126) ~~ 2(1-2^(-24)) * 2^127
    这个还不是float的取值范围,因为标准中还规定了非规格化表示法,另外还有一些特殊规定.
   
非规格化表示:
    当指数部分全0而且小数部分不全0时表示的是非规格化的浮点数,因为这里默认没有前导1,而是0.
    取值位0.f * 2^(-126),表示范围位 2^(-149)~~ (1-2^(-23)) * 2^(-126) 这里没有考虑符号.这里为什么是-126而不是-127? 如果是-127的话,那么最大表示为
2^(-127)-2^(-149),很显然2^(-127) ~~2^(-126) 就没法表示了.
其他特殊表示
    1.当指数部分和小数部分全为0时,表示0值,有+0和-0之分(符号位决定),0×00000000表示正0,0×80000000表示负0.
    2.指数部分全1,小数部分全0时,表示无穷大,有正无穷和负无穷,0×7f800000表示正无穷,0xff800000表示负无穷.
    3.指数部分全1,小数部分不全0时,表示NaN,分为QNaN和SNaN,Java中都是NaN.
结论:
    可以看出浮点数的取值范围是:2^(-149)~~(2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE.
分享到:
评论

相关推荐

    解决java数值范围以及float与double精度丢失的问题

    下面小编就为大家带来一篇解决java数值范围以及float与double精度丢失的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java基本数据类型.docx

    在Java中,基本数据类型是指原始...这些基本数据类型在Java中用于存储不同类型的数据值,它们分别占用不同的内存空间,并具有不同的取值范围。在Java中,基本数据类型是直接存储在栈内存中的,因此它们的访问速度很快。

    java面试题-附答案

    java面试题 1.JDK和JRE区别 JRE(Java Runtime Enviroment)是运行Java程序所必须环境的集合,包含JVM标准实现...short属于Java中的整型,长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(3276

    java综合试题(面试题)

    6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。...

    Java程序设计基础:基本数据类型.pptx

    取值范围 byte 1字节(8位) -27~-27 -1即-128~127 short 2字节(16位) -215~215 -1 int 4字节(32位) -231~231-1 long 8字节(64位) -263~263 -1 浮点型 类型名称 占用存储空间 取值范围 float 4字节(32位) -3...

    Java的8大基本数据类型.pdf

    long⼀般⽤于描述⽇期、时间、内存、⽂件⼤⼩,IO处理⼀般使⽤byte 字符型 char⼀般⽤于描述中⽂(基本忽略),取值范围:(\u0000 - \uffff) —>(0 - 65535);,字符型⽤' '表⽰;char ch = 'A', char和int可以相互...

    Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue

    Java中常量的分类: 1,整数常量。所有整数 2,小数常量。所有小数 3,布尔(boolean)型常量。较为特有,只有两个数值。true false。 4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。 5,字符串常量。...

    第三章JAVA 中的数组及字符串.doc

     其它与C语言中的数组概念相同,包括利用数组下标赋值、取值以及内存中的存储方式等。  与C语言不同,数组也是类(对象),有许多方法可调用(如长度等) 二:多维数组(二维数组)  定义:int two[][]=new ...

    2.Java基础语法.ppt

    数值型: 类型 所占空间 取值范围 默认值 字节型 byte 1个字节(8位) -128—127 0 短整型 short 2个字节(16位) -32768—32767 0 整形 int 4个字节(32位) +-2(的31次方)约21亿 0 长整形 long 8个字节(64...

    JAva拖动滑块旋转图片.rar

    JAva拖动滑块旋转图片,拖动滑块可改变图片 旋转的角度,可学习下滑块取值赋值的技巧。部分代码如下:  super("图像旋转演示"); //调用父类构造函数  jSlider.setPaintTicks(true); //绘制标志位  jSlider....

    华氏温度与摄氏温度的转换 java小程序

    建立一个Temperature类,它有两个实例变量:一个是温度值(float);另一个是温度的计量单位(char),即取值 ’C’ 或 ’F’,C表示Celsius(摄氏温度)、F表示Fahrenheit(华氏温度)。这个类还应有2 个构造方法...

    【02-数据类型与运算符】

     –在内存中各占:1,2,4,8个字节, 各有各的取值范围,略记一下。  •在定义long 类型时 必须在数字后面加L,  •整数常量有三种表示方式: 十进制,八进制(以0开头),十六进制(以0x开头), 二进制(以OB开头—jdk1.7)...

    Java虚拟机规范(Java SE 7)

    2.8.1 Java虚拟机和IEEE 754中的浮点算法 .......................... 35 2.8.2 浮点模式 ................................................. 36 2.8.3 数值集合转换 ...............................................

    java版2048源码下载-jvm:实战虚拟机

    java版2048源码下载 实战JAVA虚拟机 java语言规范 语法,词法,支持的数据类型,变量类型,数据类型转换的约定,数组,异常等,告诉开发人员“java代码应该怎么样写” 词法 什么样的单词是对的。 整数可以有下划线 ...

    day021-反射和注解笔记和代码.rar

    基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象; 注意 : 1、 Class类 和它的实例的产生: Class的对象是已经存在的类型, 所以不...

    抽象和封装PPT

    5.1 属性私有,通过getXXX()或 setXXX()方法来取值或赋值,在setXXX()方法中添加 代码进行控制 5.2 6.this 表示对象本身(部分内容还要和后面的super对照讲解) 7.八种原生数据类型 作为属性变量的时候 系统会...

    freemarker总结

    这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>... <#else> ... 例子如下: (age>60)>老年人 ...

    PL/SQL 基础.doc

    2) 关系 =(相当于JAVA中的==) > < <> != ~= ^= <= >= 3) 赋值 := 例子a:=2 4) 连接 || 例: 'abc' || 123 5) 标号 需要的标记 >> 6) 注释 --(单行) /* */(段落) 7) 替代 <scape> <tab> 6. 文字 1)字符型...

Global site tag (gtag.js) - Google Analytics