java中double值是非数字值是什么意思?

Python025

java中double值是非数字值是什么意思?,第1张

double 类型有 1 个非数字的特殊值,0.0 除以0 或对一个负数开方会得到 Double.NaN,表示非数字。可用如下代码测试:

double a = 0.0/0

System.out.println(a) //输出 NaN

System.out.println(Double.isNaN(a)) //true

Double.isNaN(a) 返回 true,所以 a 是一个非数字值。

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

正无穷大:用一个正数除以0将得到一个正无穷大,通过Double或Float的POSITIVE_INFINITY表示。

负无穷大:用一个负数除以0将得到一个负无穷大,通过Double或Float的NEGATIVE_INFINITY表示。

非数:0.0除以0.0或对一个负数开放将得到一个非数,通过Double或Float的NaN表示。

所有的正无穷大的数值都是相等的,所有的负无穷大的数值都是相等;而NaN不与任何数值相等,甚至和NaN都不等。

public class javaLesson5

{

public static void main(String[] args)

{

   float af = 5.2325556f

   //下面将看到af的值已经发生改变,显示结果为5.2325554.

   System.out.println(af)

   double a = 0.0

   double c = Double.NEGATIVE_INFINITY

   float d = Float.NEGATIVE_INFINITY

   //将看到float和double的负无穷大是相等的。显示结果为:true。

   System.out.println(c == d)

   //0.0除以0.0将出现非数。显示结果为:NaN。

   System.out.println(a / a)

   //两个非数之间是不相等的。显示结果为:false。

   System.out.println(a == Float.NaN)

   //所有正无穷大都是相等的。显示结果为:true。

   System.out.println(6.0 / 0 == 555.0/0)

   //负数除以0.0将得到负无穷大。显示结果为:-Infinity

   System.out.println(-8 / a)

   //下面代码将抛出除以0的异常。

   //System.out.pintln(0 / 0)

}

}

如果把数字截取掉后只是字母那就可以这样办:

匹配字母:[a-zA-z]*

意思是字母的组合出现一次或两次;

如果后面的不仅是字母还有别的东西的话 ,那就截取前面数字好了,

匹配不是数字,-,和小数点的组合就好了,如下:

[^\\d\\-\\.]*

希望对你有帮助:)