Integer.parseInt(str[i])*Math.pow(2,n) 会得到什么类型 为什么
时间: 2024-05-20 15:13:18 浏览: 12
`Integer.parseInt(str[i])*Math.pow(2,n)` 的结果会得到一个 `double` 类型的值。这是因为 `Math.pow(2,n)` 的返回值是 `double` 类型的,因此整个表达式中存在一个 `double` 类型的值,最终结果也是 `double` 类型的。`Integer.parseInt(str[i])` 返回的是一个 `int` 类型的值,但是由于与 `double` 类型的值进行了运算,因此会发生自动类型转换,将 `int` 类型的值转换为 `double` 类型的值。
相关问题
res += Integer.parseInt(str[i])*Math.pow(2,n); res 是什么类型 为什么
`res` 是一个整数类型(`int` 或 `long`)。这是因为 `Integer.parseInt(str[i])` 返回一个整数,而 `Math.pow(2,n)` 返回的是一个双精度浮点数,它们相乘的结果也是一个双精度浮点数。但是,由于最后结果是要赋值给 `res`,因此需要将其转换为整数类型。在这里,使用了整数类型的强制类型转换,将双精度浮点数转换为整数类型。
Long sum =Integer.parseInt(s)*Math.pow(2,n); 哪里错了
这段代码可能会出现精度问题,因为 `Math.pow(2,n)` 返回的是 double 类型,如果 s 很大,那么将其转为 int 类型可能会导致精度丢失。建议使用 BigDecimal 类型来进行精确计算。另外,如果 s 表示的数很大,超过了 int 类型的范围,那么也需要使用 long 或 BigDecimal 类型来存储。示例代码如下:
```
import java.math.BigDecimal;
// 其中 s 和 n 均为字符串类型
String s = "12345678901234567890";
String n = "100";
BigDecimal sum = new BigDecimal(s).multiply(new BigDecimal("2").pow(Integer.parseInt(n)));
```
这样可以保证精度和数值的正确性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)