谁能跟我讲讲,java中double a = (double)1 / i 和double a = (double)(1 / i ) 的不同?

如题所述

如果i的精度比double还小,那么:
double a = (double)1 / i 会报错,因为先把1转换为double类型,然后1/i 返回的精度类型不是double;
double a = (double)(1 / i ) 则会先计算1/i 然后才把结果转成double追问

i是 int型的,可是double a = (double)(1 / i )结构是0.0而double a = (double)1 / i 结果确是正确的 搞不懂耶

追答

int i = 2
double a = (double)(1 / i );
double b= (double)1 / i ;
System.out.println(a);
System.out.println(b);
结果是
0.0
0.5

怪不得你会出这个错,如果i比1大,那么(1 / i) 结果如果是整型,则会取下限为 0(只取整数位) ;另一个计算方式则是doubule,所以是0.5

追问

谢谢你!明白了

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答