double转int
double向下cast成int
int a = (int)9.99;//a = 9
int b = (int)-7.86;//b = -7
是直接取整的
如果希望按照近似值转换则需要用
float f = 9.99;
double d = -1.9999999;
int a = Math.round(f);//a = 10
long b = Math.rond(d);//b = -2
//注意这里float类型取近似要用int,
//而double类型取近似要用long
NaN、Infinity与0.0
另外我真是个大傻子
一开始把NaN和Infinity搞混了
溜去重修CSAPP
如果除法计算可能出现1/0
,要检查这样的结果
double d = 1/0
if(Double.isInfinite(d)){
System.out.println("d is Infinite");
}
对于Math.atan(double d)
这样的方法,如果d为NaN
,则返回NaN
,如果d是0则返回0,是-0则返回-0。
但是!-0==0
也就是说
double d1 = -0;
double d2 = 0;
if(d1==d2){
System.out.println("-0==0");//会输出
}else{
System.out.println("-0!=0);
}