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); //抛出异常
}
}