Java 中的NAN 和 infinity

1、Java取余操作:

结果符号:与左操作数相同;-64%-6 = -4

操作数:  两个都是整型:

int x

int y

x%y, 如果y=0, 则抛出arithmeticException异常:

操作数中有浮点型:

int x

double y;

取余操作的过程,不断用x减去y,直到结果小于y即可。

如果y==0, 结果为NAN(不是一个数)

2、Java除法

1、int x = 3;

int  y = 0;

x/y 抛出异常;

2、double x = 3.0

double y = 0.0;

x/y 结果为infinity

在java除法中,允许浮点数运算时除 数为零,所得结果是Infinity

    1. double i = 1.0 / 0;
    2. System.out.println(i);             //Infinity
    3. System.out.println(i + 1);         //Infinity
    4. System.out.println(i == i + 1);    //true
    5. i = 0.0 / 0;
    6. System.out.println(i);             //NaN
    7. System.out.println(i + 1);         //NaN
    8. System.out.println(i == i + 1);    //false

Java 中的NAN 和 infinity

时间: 2024-07-31 23:40:06

Java 中的NAN 和 infinity的相关文章

Java中四则运算的那些坑

使用Java开发多年,感觉自己的水平也在不断提升,但是被Java狂虐却从来都没变过,而且任何一个Java的小角落,都能把我虐的体无完肤,但是无奈要靠Java吃饭,还得恬着脸继续使用下去.说说最近遇到的问题,则于新工作属于互联网金融,所以里面涉及到了大量的资金计算,资金计算对数字要求的比较严谨,作为一个粗心而又自大的Java程序员,一直没把这个当回事儿,于是又被Java吊打一遍.下面记录一下Java中四则运算的一些需要注意的小坑. 数学计算,免不了要想到 int long double 这种数据类

Java中Double与BigDecimal的相互转换

今天写代码过程中,发现一个Double的变量通过new BigDecimal(Double d)转换为BigDecimal时,有效数字改变了,如下: public class BigDecimalTest { public static void main(String[] arg) { String s1 = "123.45"; Double d1 = new Double(s1); //使用String类型的形参构造BigDecimal BigDecimal bg1 = new B

Java 中浮点数---------BigDecimal和double(初探)

为什么要使用 bigdecimal? 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦. BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale

【java解惑】java中那些反常识的小知识

一.Q:请为 i == i + 1 ;  提供一个声明使得条件成立.  分析:一个数字永远不会等于它自己加 1对吧!如果这个数字是无穷大的又会怎样呢?Java 强制要求使用IEEE二进制浮点数算术标准IEEE 754,它可以让你用一个 double 或 float 来表示无穷大.无穷大加 1 还是无穷大.如果 i 在声明为无穷大那么i == i + 1 就成立.     A:可以用任何被计算为无穷大的浮点算术表达式来声明 i ,例如double i = 1.0 / 0.0; 不过最好是能够利用标

Java中浮点类型的精度问题 double float

要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法与浮点数的结构组成.因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法.比如,简单点的,float四个字节,前两个字节表示整数位,后两个字节表示小数位(这就是一种规则标准),这样就组成一个浮点数.而Java中浮点数采用的是IEEE 754标准. IEEE 754 标准 更多详见:https://baike.baidu.com/item/IEEE%20754 IEEE 754 标准是IEEE二进位浮点数

java中两double相加精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); } 控制台输出2001299.4300000002 我们吃惊的发现,结果并不是我们预想的那样,这是为什么呢?又如何解决呢? 现贴出BigDecimal的一个构造函数的文档供大家参考 BigDecimal pu

javascript 实现类似Java中的hashmap

应用场景: 想把函数和函数对应的数据比较直观的存储起来 突然觉得Javascript中的object不够用了  所以自己仿了个java中的hashmap key支持任何Javascript类型的数据 但是NaN Undefined 这种类型的没有实验 以下是源码 function hashmapfn(){      var p={      rkey:7,      size:0,      obj:{}      };      function getKey(key){      if(ty

沉淀再出发:java中注解的本质和使用

沉淀再出发:java中注解的本质和使用 一.前言 以前XML是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,XML的内容也越来越复杂,维护成本变高.于是就有人提出来一种标记式高耦合的配置方式——注解.方法上可以进行注解,类上也可以注解,字段属性上也可以注解,反正几乎需要配置的地方都可以进行注解.关于注解和XML两种不同的配置模式,争论了好多年了,各有各的优劣,注解可以提供更大的便捷性,易于维护修改,但耦合度高,而XML相对于注解则是相反的.追求低耦合就要抛

平行世界中的你还是你吗?--java中的==是否相等

故事背景 <宇宙追缉令>是黄毅瑜执导的动作科幻类电影,由哥伦比亚三星公司出品,戴尔里·林多.李连杰.杰森·斯坦森领衔主演.影片于2001年11月2日在美国上映.该片讲述了邪恶尤兰,为了成为宇宙最强的人,逐一消灭了一百二十三个宇宙其他空间的分身,并吸收他们的能量,最后剩下一个在洛杉矶当警察的正义尤兰与他展开一场生死决战的故事. 在故事中,其他数个空间的分身,每杀掉一个自己,其其他分身的功力就会增长.感觉有点恐怖和惊奇,分身是自己还是别人?或者自己是自己吗?值得一看的电影. 数学世界 在数学中,不