Java中NaN和-0.0f的比较问题】的更多相关文章

简单的说,比较两个int型或long型的数据没有什么问题,可以用==来判断,但对浮点数(float与double)来说,需要对Float.NaN和0.0这个两个特殊数字作额外的处理.Float.NaN严格说来不是一个数字(它的字面意思也就是Not a Number),但是因为这个值可以被保存在一个float型的变量中(因为它常常是除0的结果),所以暂且当它是个数字吧.但它与一般的浮点数有些许不同,就是两个NaN用==比较的结果会得到false.可以用下面的代码验证: Code highlight…
转自http://blog.csdn.net/alanzyy/article/details/8591534 在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: 对于除数a和被除数b (a=0), (1)如果二者均为int型(long也是int型),结果会抛出异常:java.lang.ArithmeticException: / by zero (2)如果其中有一个为double或者float型,结果则是Infinity 另外,对于Double和Float的…
string.equalsIgnoreCase("0"):如果string为null,会抛出java.lang.NullPointerException异常. "0".equalsIgnoreCase(string):即使string为null也不会抛出异常. 所以一般如果判断一个字符串与一个常量是否相等的时候,应该写成:"0".equalsIgnoreCase(string)的形式.…
有如下两个变量定义,这两种定义有什么区别呢? 1. int[] zero = new int[0]; 2. int[] nil = null; zero是一个长度为0的数组,我们称之为“空数组”,空数组也是一个对象,只是包含元素个数为0.nil是一个数组类型的空引用. 假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组,则无须null引用检查.鉴于此,返回数组的方法在没有结果时我们通常返回空数组,而不是null,这样做对…
蓝桥杯失利后发现算法与数据结构的重要性,开始学习算法,刚刚在看<算法4>,看到了这么个东西,让我对java中的size运算有了新的感悟. 在java中输出1/0会发生什么,毫无疑问会报异常,by/zero 但是神奇的就来了,当在控制台输出 1.0 / 0/0的时候,控制台输出的东西是我之前没见到过的.. 用图片来感受吧.... 后来发现是因为,java中的 + - * / 都是被重载过的,所以同样的运算符对不同类型会执行不同的操作. 查看Double的源代码后发现  通过这次学习,感觉有了一点…
为什么要使用 bigdecimal? 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦. BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale…
java浮点数运算中有两个特殊的情况:NAN.INFINITY. 1.INFINITY: 在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢? 我们知道,在整型运算中,除数是不能为0的,否则直接运行异常.但是在浮点数运算中,引入了无限这个概念,我们来看一下Double和Float中的定义. Double: public static final double POSITIVE_INFINITY = 1.0 / 0.0; public static final double N…
学过javaScript的应该都知道,在js中的数值型number类型中有几个特殊的数,一个正无穷大.一个负无穷大.一个不是一个数NaN. 后来无意中发现java中也有这三个数,不过这三个数是浮点数,不是整数.只有在浮点数中这这三个数才成立.看图分析: 正无穷 infinity: 负无穷 -infinity: 不是一个数NaN:…
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,spring framework是javaee的框架,spring framework->spring boot->spring cloud分布式环境. spring boot由java 8+以上支持,因为底层spring framwork 5.0.x,特性web flux,具有函数式编程(java8…