[七]基础数据类型之Float详解
属性简介
| 用来以二进制补码形式表示 float 值的比特位数 | public static final int SIZE = 32; |
| 二进制补码形式表示 float 值的字节数 | public static final int BYTES = SIZE / Byte.SIZE; |
| 表示基本类型 float 的 Class 实例 | public static final Class<Float> TYPE = (Class<Float>) Class.getPrimitiveClass("float"); |
| 能够表示的最大值 只有标准化一种形式,也就是前文提到过的 |
public static final float MAX_VALUE = 0x1.fffffeP+127f; |
标准化的最小值 |
public static final float MIN_NORMAL = 0x1.0p-126f; |
最小值还有非标准化的形式 |
public static final float MIN_VALUE = 0x0.000002P-126f; |
| 正无穷 它等于 Float.intBitsToFloat(0x7f800000) 返回的值 |
public static final float POSITIVE_INFINITY = 1.0f / 0.0f; |
| 负无穷 它等于 Float.intBitsToFloat(0xff800000) 返回的值 |
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f; |
| NaN not a number 它等于 Float.intBitsToFloat(0x7fc00000) 返回的值 |
public static final float NaN = 0.0f / 0.0f; |
| 指数真值的有效的最大值 | public static final int MAX_EXPONENT = 127; |
| 指数真值的有效的最小值 | public static final int MIN_EXPONENT = -126; |
构造方法
| Float(float value) |
|
| Float(String s) |
|
| Float(double value) |
直接强转 |
常用方法
| Float 获取表示形式 对于获取表示形式 提供了两种形式的方法,主要是针对于非数字的NaN的不同表示 他们可以与intBitsToFloat 可以进行互相转换
|
||||
| 将表示形式转换为Float,返回对应于给定位表示形式的 float 值 本地方法 其实就是按照布局计算float
如果参数为 0x7f800000,则结果为正无穷大
如果参数为 0xff800000,则结果为负无穷大
如果参数值在 0x7f800001 到 0x7fffffff 或在 0xff800001 到 0xffffffff 之间,则结果为 NaN
Java 提供的任何 IEEE 754 浮点操作都不能区分具有不同位模式的两个同类型 NaN 值
不同的 NaN 值只能使用 Float.floatToRawIntBits 方法区分
|
| static boolean isNaN(float v) |
静态方法 是否一个非数字 (NaN) 值 非数值 true |
| static boolean isFinite(float f) |
静态方法 是否是有限的浮点数 有限的true |
| static boolean isInfinite(float v) |
静态方法 是否是无穷大 是无穷大 true |
| boolean isInfinite() |
实例方法 依赖静态方法 |
| boolean isNaN() |
实例方法
依赖静态方法
|
比较
| static int compare(float f1, float f2) |
静态方法 比较两个float f1 < f2 小于0 f1 = f2 等于0 f1 > f2 大于0 |
| int compareTo(Float anotherFloat) |
实例方法 两个对象进行大小比较,依赖于静态方法 |
parseXXX系列
| 返回一个字符串形式表示的基本类型float 表现效果同valueOf(String),不过valueOf 返回的是对象 |
| 如果String是null或者不包含可以解析的字符串将会抛出异常 |
底层依赖sun.misc.FloatingDecimal
|
valueOf系列
| static Float valueOf(float f) |
|
| static Float valueOf(String s) |
依赖parseFloat方法 所以上面说跟valueOf(String)表现效果相同,本身就是一样 |
Float没有 decode方法
XXXValue系列
| 类似之前介绍的其他数值类型 全部都是强转内部的 value return (XXX)value; |
byteValue()
shortValue()
intValue()
longValue()
floatValue()
doubleValue()
|
toString toXXXString 系列
| static String toString(float f) |
静态方法 |
| String toString() |
实例方法 内部调用 static String toString(float f) |
| static String toHexString(float f) |
静态方法 返回 float 参数的十六进制字符串表示形式 |
equals
| boolean equals(Object obj) |
将此对象与指定对象进行比较
当且仅当参数不是 null 而是 Float 对象,且表示的 float 值与此对象表示的 float 值相同时,结果为 true
为此,当且仅当将方法 #floatToLongBits(double) 应用于两个值所返回的 int 值相同时,才认为这两个 float 值相同
注意,在大多数情况下,对于 Float 类的两个实例 f1 和 f2,当且仅当
f1.floatValue() == f2.floatValue()
的值为 true 时,f1.equals(f2) 的值才为 true。但是,有以下两种例外情况:
如果 f1 和 f2 都表示 Float.NaN,那么即使 Float.NaN==Float.NaN 的值为 false,equals 方法也将返回
true 所以此处使用的是floatToIntBits,而不是raw的
如果 f1 表示 +0.0f,而 f2 表示 -0.0f,或相反,那么即使 0.0f==-0.0f 的值为 true,equal 测试也将返回
false 该定义使得哈希表得以正确操作。
|
hashCode
| static int hashCode(float value) |
静态方法 获得一个value的hashcode值 |
| int hashCode() |
实例方法 依赖静态方法 |
其他方法
| sum(float, float) |
|
| max(float, float) |
|
| min(float, float) |
|
总结
标准的一个实现,根本还是在于标准的理解
[七]基础数据类型之Float详解的更多相关文章
- [五]基础数据类型之Short详解
Short 基本数据类型short 的包装类 Short 类型的对象包含一个 short 类型的字段 原文地址:[五]基础数据类型之Short详解 属性简介 值为 215-1 ...
- [二]基础数据类型之Long详解
Long Long 基本数据类型long 的包装类 Long 类型的对象包含一个 long类型的字段 属性简介 值为 263-1 的常量,它表示 long 类型能够表示的最大值 ...
- [三]基础数据类型之Integer详解
Integer 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 属性简介 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值 @N ...
- [八]基础数据类型之Double详解
Double 基本数据类型double 的包装类 Double 类型的对象包含一个 double 类型的字段 属性简介 用来以二进制补码形式表示 double 值的比特位数 public sta ...
- [九]基础数据类型之Boolean详解
相对于其他的基础性 类型Boolean是很简单的 Boolean 基本数据类型boolean 的包装类 Boolean 类型的对象包含一个 boolean 类型的字段 属性简介 属性也比较 ...
- Python数据类型及其方法详解
Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- mysql基础篇 - SELECT 语句详解
基础篇 - SELECT 语句详解 SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...
- Java基础-面向接口编程-JDBC详解
Java基础-面向接口编程-JDBC详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JDBC概念和数据库驱动程序 JDBC(Java Data Base Connectiv ...
随机推荐
- 编程菜鸟的日记-Linux无处不在
原文来自:http://www.linuxfederation.com/linux-everywhere Linux无处不在 “Linux无处不在.从空间站到微波炉到有Linux.”你可能听说很多以及 ...
- [转]XModem协议
出处:XModem协议 XModem协议介绍:XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即 ...
- vue 源码学习(一) 目录结构和构建过程简介
Flow vue框架使用了Flow作为类型检查,来保证项目的可读性和维护性.vue.js的主目录下有Flow的配置.flowconfig文件,还有flow目录,指定了各种自定义类型. 在学习源码前可以 ...
- 读取Excel文件存储在实体类中
1.Maven文件 <!--读取Excel的架包--> <dependency> <groupId>org.apache.poi</groupId> & ...
- MVC是什么
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- 刚发现 CSS 还存在一个命名规范 B.E.M
Block !误区:这个block并非inline-block里的block,而是将所有东西都划分为一个独立的模块,一个header是block,header里嵌套的搜索框是block,甚至一个ico ...
- LeetCode编程训练 - 合并查找(Union Find)
Union Find算法基础 Union Find算法用于处理集合的合并和查询问题,其定义了两个用于并查集的操作: Find: 确定元素属于哪一个子集,或判断两个元素是否属于同一子集 Union: 将 ...
- Python的变量声明
Python 与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明.变量通过首次赋值产生,当超出作用范围时自动消亡. Example 1. 定义 myParams 变量 if __n ...
- FFmpeg 结构体学习(四): AVFrame 分析
在上文FFmpeg 结构体学习(三): AVPacket 分析我们学习了AVPacket结构体的相关内容.本文,我们将讲述一下AVFrame. AVFrame是包含码流参数较多的结构体.下面我们来分析 ...
- Javascript高级编程学习笔记(90)—— Canvas(7) 绘制图像
绘制图像 2D绘图上下文内置了对图像的支持 如果希望将一幅图绘制到画布上,可以使用 drawImage() 的方法 该方法有三种不同的参数数组合以对应不同的应用场景 将<img>绘制到画布 ...