Java学习笔记(2)

Posted on 2019-03-08 19:02  Rock Wang  阅读(112)  评论(0编辑  收藏  举报

int 和 booleam 不能直接转换,如下语法是不能通过的:

boolean b = true;
int i = (int) b;

int j = 1;
boolean a = (boolean) j;

对两个浮点数作相当比较时,经常不会得到想要的结果,如下:
double x=1.0 - 0.1 - 0.1  -0.1 - 0.1 - 0.1;
System.out.println(x == 0.5);

你可能期望打印 true, 但是会打印 false, 这跟浮点数的存储方式有关,实际上x不是0.5,而是0.5000000000000000001.

既然不能直接比较是否相等,可以比较二者差的绝对值是否小于某个非常小的极限值,可用如下公式来间接比较二者是否相等:
if |x - y| < ε, 其中的 ε 就是要采用的极限值,通常比较 double 类型的值时用1E-14, 比较 float 类型的值时用1E-7.
所以上面的比较可以改写为:
final double EPSILON = 1E-14;
double x=1.0 - 0.1 - 0.1 -0.1 -0.1 -0.1 -0.1;
if (Math.abs(x-0.5)<EPSLION){
  System.out.println("二者无限接近")
}

 

使用Math.random()产生一个0.0到1.0(不含)之间的浮点数

System.exit(int status); 用于终止程序,0表示正常退出,非0表示非