正无穷大、负无穷大和非数

java提供了三个特殊的浮点数值: 正无穷大、负无穷大和非数,用于表示溢出和出错

正无穷大(POSITIVE_INFINITY):用一个正数除以0就得到一个正无穷大
负无穷大(NEGATIVE_INFINITY):用一个负数除以0就得到一个负无穷大
非数(NaN):0.0除以0.0或一对负数开方将得到一个非数

== 注意==
1.所有的正无穷大数值都是相等的,所有的负无穷大数值也都是相等的,非数不和任何值相等,包括非数
2.只有浮点数除以0才可以得到无穷大,因为java语言会自动把和浮点数运算的0(正数)当成0.0(浮点数)处理。如果一个正数除以0,则会抛出一个异常:ArithmeticException:/by zero(除以0异常)

下面程序示范介绍了相关知识:
/:除运算

public class MyDemo4 {
    public static void main(String[] args) {
        double a=0.0;
        double c=Double.NEGATIVE_INFINITY;
        float d=Float.NEGATIVE_INFINITY;
        //看到float和double的负无穷数值是相等的
        System.out.println(c == d);
        //0.0除以0.0将出现非数
        System.out.println(a / a);
        //两个非数之间不相等
        System.out.println(a == Float.NaN);
        //所有正无穷数都是相等的
        System.out.println(6.0 / 0 == 55.0 / 0);
        //负数除以0.0得到负无穷大
        System.out.println(-8 / a);
        //下面代码将抛出异常
        System.out.println(0 / 0);
    }
}

%:求余运算符
运行第二个操作数是0或0.0,只是求余运算的结果是非数:NaN
0或0.0对零以外任何数求余都将得到0或0.0
看程序如下:

public class MyDemo5 {
    public static void main(String[] args) {
        double a=5.2;
        double b=3.1;
        double mod=a%b;
        System.out.println(mod);//mod的值为2.1
        System.out.println("5对0.0求余结果是:"+5%0.0); //非数
        System.out.println("5.0对0求余结果是:"+5.0%0);  //非数
        System.out.println("0对5.0求余结果是:"+0%5.0); //0.0
        System.out.println("0对0.0求余结果是:"+0%0.0);  //非数
        System.out.println("-5对0求余结果是:"+-5%0); //抛出异常
    }
}

猜你喜欢

转载自blog.csdn.net/ly823260355/article/details/86676465