【发布时间】:2015-06-24 20:32:48
【问题描述】:
我的问题看起来很简单。
int i =99999;
long square = i*i;
System.out.println(square); //prints 1409865409 - incorrect value
int i = 99999;
long square = (long) i*i;
System.out.println(square); // prints 9999800001 - correct value
看起来是 int 的范围问题。 但是它不应该将产品类型转换为 long 隐式吗? 我在这里想念什么? 我知道如何使用 Math.pow(double,double) 函数并且它运行良好。但 我想知道上面输出的原因。
TIA。
【问题讨论】:
-
i * i始终是int,无论您是否将其分配给long。 -
“但它不应该隐式地将产品类型转换为 long 吗?” 是的,就是这样。 产品将扩大到
long,而不是因素。
标签: java int long-integer