Java将22乘360除以2的31次方,结果是0。可是为什么计算器算出来的不是0,请给出解释。以及如何才能将java算出的结果等于计算器算出的结果
时间: 2024-02-01 12:12:54 浏览: 25
Java中的整数类型为有符号的32位整数,即int类型。在进行运算时,结果也会被强制转换为int类型。当计算22乘360时,结果已经大于int类型的最大值,因此会发生溢出。溢出后的结果是一个负数,其二进制表示为1后面跟着31个0。
然而,Java中的除法运算符会将结果向0取整。因此,当将这个负数除以2的31次方时,结果为0。
计算器可能使用的是高精度计算,可以正确地计算出结果。如果想要在Java中得到与计算器相同的结果,可以使用长整型(long)来进行计算,并在最后将结果强制转换为int类型。例如:`(int)(22L * 360 / (1L << 31))`
相关问题
Java中将121200000乘0.000001除360乘2的31次方,给出代码运算过程以及结果
代码运算过程如下:
```
long result = (long)((121200000 * 0.000001) / 360 * Math.pow(2, 31));
System.out.println(result);
```
解释一下计算过程:
1. 121200000乘0.000001等于0.1212
2. 0.1212除以360等于0.0003366666666666667
3. 将0.0003366666666666667乘以2的31次方等于1449556.65536
4. 因为要将结果存储在long类型中,所以将小数点后面的数舍去,得到1449556
因此,代码的运行结果为1449556。
Java中将121200000乘0.000001除360乘2的三一次方,给出代码运算过程以及结果
Java中将121200000乘0.000001除360乘2的三次方,可以使用Math类中的pow方法来实现。具体代码如下:
```
double result = Math.pow(121200000 * 0.000001 / (360 * 2), 3);
System.out.println(result);
```
运算过程如下:
首先计算121200000乘0.000001得到0.1212,然后除以360乘2,得到0.00016833333,再将其三次方,得到0.00000000000000465144。
最终结果为:0.00000000000000465144。