java nan 和 infinity,Float中的那些常量 Infinity、NaN
在 Java 计算中,肯定会使用各种基本数据类型,进行加减乘除等操作。但是假如哪一天,你发现一个函数给你返回了一个float结果,你打印出来后却发现不是小数,而是Infinity或NaN这种东西,你可能就一脸黑人问号了。
这两个值确实是 Java 提供的数值,一个返回float的函数给你返回这两个值也是没有任何问题的。那这两个值各代表什么意义呢,下面给出答案:
无穷大 Infinity
在Float类中,有两个静态常量:
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;
这两个常量一个表示正无穷,一个表示负无穷。在计算上,有一点一定要特别注意:
无穷大加上一个数还是无穷大。
double infinity = 1.0 / 0;
System.out.println(infinity); //Infinity
System.out.println(infinity + 1); //Infinity
System.out.println(infinity == i + 1); //true
如果你要初始化一个数为无穷大,那么可以用任何被计算为无穷大的浮点算术表达式来初始化,或者使用Float提供的常量:
float infinity = 1.0 / 0.0;
float infinity = Float.POSITIVE_INFINITY;
不是数字的数 NaN
NaN,not a number,对于所有没有良好的数字定义的浮点计算,如0.0/0.0,结果都是NaN。在Float类中,提供了一个常量来表示NaN:
public static final float NaN = 0.0f / 0.0f;
初始化一个数字为NaN,可以像Float一样用任何计算结果为NaN 的浮点算术表达式或直接用Float提供的这个常量:
float nan= 0.0 / 0.0;
float nan = Float.NaN ;
NaN 有一些奇葩的性质,在计算时需要特别注意:
NaN 不等于任何浮点数值,包括它自身在内;即它与任何数比较均返回false。
任何浮点操作,只要它的一个或多个操作数为NaN,那么其结果为NaN。
虽然NaN与任何数比较均返回false,但是使用Float.compare()这个方法来比较两个NaN时,却会得到相等的结果。如下:
float nan = 0.0 / 0;
System.out.println(nan); //NaN
System.out.println(nan + 1); //NaN
System.out.println(nan == nan + 1); //false
float anan = 0.0 / 0;
System.out.println(Float.compare(nan,anan)); //true
Float 中的其他常量:
上面介绍了Float类中的3个常量,这3个是需要特别注意的,其他Float还有其他的常量,只是不常用而已。下面就对Float中的常量做一下总结:
float POSITIVE_INFINITY = 1.0f / 0.0f;正无穷大
float NEGATIVE_INFINITY = -1.0f / 0.0f;负无穷大
float NaN = 0.0f / 0.0f;表示不是一个数字
float MAX_VALUE = 0x1.fffffeP+127f; float能表示的最大正值:3.4028235e+38f
float MIN_NORMAL = 0x1.0p-126f; 1.17549435E-38f
float MIN_VALUE = 0x0.000002P-126f; float能表示的最小正值 1.4e-45f
final int MAX_EXPONENT = 127; 一个有限float数值的最大指数值
final int MIN_EXPONENT = -126; 一个有限float数值的最小指数值
final int SIZE = 32; 一个float类型数值占用的比特数
final int BYTES = SIZE / Byte.SIZE; 一个float类型数值占用的字节数
另外,在 Java 提供的另一个浮点类Double类中,也存在相同意义的常量,只是值不同而已。
java nan 和 infinity,Float中的那些常量 Infinity、NaN相关推荐
- c语言中出现nan错误,c语言中浮点运算的inf和nan错误
============================================ 作者:yuanlulu http://blog.csdn.net/yuanlulu 版权没有,但是转载请保留此 ...
- -infinity java_java中的NAN和INFINITY
java浮点数运算中有两个特殊的情况:NAN.INFINITY. 1.INFINITY: 在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢? 我们知道,在整型运算中,除数是不能为 ...
- 用Java向SQL Server数据库中插入float数据报错An error occurred while converting the Float value to JDBC data type
作者:翁松秀 用Java向SQL Server数据库中插入float数据报错 用Java向SQL Server数据库中插入float数据报错 报错信息: 报错原因: 解决方案: 报错信息: An er ...
- java怎么表示正无穷大_java中怎样表示一个无穷大? 无穷小?
Java中提供了三个特殊的浮点数值:正无穷大.负无穷大.非数,用于表示溢出和出错. 正无穷大:用一个正数除以0将得到一个正无穷大,通过Double或Float的POSITIVE_INFINITY表示. ...
- java怎么表示正无穷大_java中怎样表示一个无穷大?无穷小
展开全部 Java中提供了三个特殊636f70793231313335323631343130323136353331333361323638的浮点数值:正无穷大.负无穷大.非数,用于表示溢出和出错. ...
- java double 取余_java中double除法和取余的若干注意
1 整数除法中,除数为0,抛出一个算术异常ArithmeticException.整数取余运算中,除数为0,抛出一个ArithmeticException异常. 如: class Test { pub ...
- 如何检查JavaScript中的数字是否为NaN?
我只是在Firefox的JavaScript控制台中尝试过,但是以下任何一条都不返回true: parseFloat('geoff') == NaN;parseFloat('geoff') == Nu ...
- java中有没有栈_Java中堆和栈有什么区别
stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...
- 机器学习中如何处理缺失数据(NAN和Ifo)?
机器学习中如何处理缺失数据(NAN)? 文章目录: 一.NAN 和 Inf 二.机器学习中空值的处理方法 一.NAN 和 Inf NAN(Not A number):意思:不是一个数字,是一个空值 I ...
最新文章
- node.js——麻将算法(一)基本判胡
- matlab根轨迹法串联超前校正,4.7基于根轨迹法的串联超前校正.ppt
- 没想到咱也算得上是先富起来的那一拨
- python如何生成列表和元组数据_Python数据类型(列表和元组)
- AliOS Things全链路优化-CoAP FOTA
- pageResponse - 让H5适配移动设备全家(移动端适配)
- 绿盟漏洞扫描_二十周年专题|绿盟极光,用专注惊艳了时光
- 47不用加减乘除做加法
- Transparent 之 TransparentBlt
- int 转string
- miniMobile(手机)
- java命令行导出、导入sql文件
- JavaWeb如何学?
- bjui—关闭dialog以及当前标签
- 【备忘】【No5】微信公众平台开发入门到实战开发视频教程(Java+PHP)
- gitlab 配置QQ邮箱
- 计算机管理打印机服务,win7系统打印机服务怎样开启 开启打印机服务的设置方法...
- IE与非IE浏览器调用PC摄像头拍摄并且上传
- 关于cloudreve在线播放视频没有声音的问题
- IOS APP 制作二维码 下载
热门文章
- 循环神经网络 简易使用
- Oracle知识点笔记
- 新浪微博iOS版SDK“宝玉XP”框…
- MP service层CRUD
- 中美创新与信用峰会:凤凰金融总裁演讲
- iphone如何防root,iphone如何防止骚扰电话
- python编译器MuEditor下载地址
- Pytorch基础知识(9)单目标分割
- 什么是Java虚拟机?为什么Java被称为平台无关的编程语言
- mysql查询每天在17-18点间的数据_[东北师范大学]《数据库系统》18秋在线作业1(100分)...