[七]基础数据类型之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 ...
随机推荐
- JS 存储
1. 描述cookie ,sessionStorage 和 localStorage 的区别? cookie : 本身用于客户端和服务器端通信, 但是有本身存储的功能,就被‘借用’ 使用documen ...
- hive求TopN语句
ROW_NUMBER,RANK(),DENSE_RANK() 先了解这三个之间的区别: Rank():1,2,2,4,5(一般用这个较多,不会影响总排名) Dense_rank():1,2,2,3,4 ...
- MariaDB dos 下连接
本地 DOS 连接 将文件目录切换到 bin 文件夹下 cd C:\xampp\mysql\bin 输入连接命令 输入 status,查看数据库版本 远程DOS 连接
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink
转自:https://www.cnblogs.com/reed/p/7730329.html 今天看到一篇讲得比较清晰的框架对比,这几个框架的选择对于初学分布式运算的人来说确实有点迷茫,相信看完这篇文 ...
- HelloPython
HELLOWORD!你好!Python! 学习Python已有一段时间,一个人自学颇不容易,在此分享一些自己学习经验和感受,温故而知新,也希望自己能有些新收获. 学习Python,大多数人创建的第一个 ...
- Data Center手册(3): Load Balancer
Load Balancer的类型 DNS Round-Robin 这是一种很常见的分流的方式,具体配置如下: name server有一个zone文件,对于同一个domain,有多个IP www.ex ...
- Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)
ASP.NET Core知多少系列:总体介绍及目录 Demo路径:GitHub-RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2. ...
- IntelliJ Idea 2017 免费激活方法
1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...
- Android单元测试之四:仪器化测试
Android单元测试之四:仪器化测试 仪器化测试 在某些情况下,虽然可以通过模拟的手段来隔离 Android 依赖,但代价很大,这种情况下可以考虑仪器化的单元测试,有助于减少编写和维护模拟代码所需的 ...
- 非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术
要说到非对称加密技术啊,得先说说对称加密技术 什么是对称加密技术 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密. 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称 ...