[七]基础数据类型之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 ...
随机推荐
- 删除PeopleSoft Process Scheduler服务器定义
DELETE FROM PS_SERVERDEFN WHERE SERVERNAME= 'PSNT2' ; DELETE FROM PSSERVERSTAT where SERVERNAME = 'P ...
- SharePoint Column Format
https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/column-formatting . { &quo ...
- mysql import error
mysql导入文件一直出错,显示ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option s ...
- LeetCode笔记:39. Combination Sum
题目描述 给定一个无重复的正整数数组 candidates 和一个正整数 target, 求所有和为 target 的 candidates 中数的组合中.其中相同数的不同顺序组合算做同一种组合,ca ...
- python | Elasticsearch-dsl常用方法总结(join为案例)
Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询.它建立在官方低级客户端(elasticsearch-py)之上. 它提供了一种更方便和习惯的 ...
- React 之 JSX
开发完了一个项目了才回来研究React 一系列的技术,算是对自己的一个提高吧,也是小公司程序员的无奈. JSX是什么? JSX是javascript的语法的扩展. 为什么使用JSX? 1.React ...
- MVC编程模型
MVC 编程模型 MVC 是三个 ASP.NET 开发模型之一. MVC 是用于构建 web 应用程序的一种框架,使用 MVC (Model View Controller) 设计: Model(模型 ...
- Redis两种秒杀抢购思路
方式一:使用DECR减库存 /** * 外卡进入减库存 * @param competitionQuarterInDTO * @return */@Overridepublic int otherCa ...
- 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试
这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统 ...
- LeetCode题解39.Combination Sum
39. Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T ...