我是Groovy的新手.
为什么这会在运行时抛出异常:
int[] a = [1,2,3,4,5]
int lo=0
int hi=4
int x = a[(lo+hi)/2]
assert x == 3
Run Code Online (Sandbox Code Playgroud)
虽然这些都可以:
int x = a[(int)(lo+hi)/2]
Run Code Online (Sandbox Code Playgroud)
和
int i = (lo+hi)/2
int x = a[i]
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 12
在一个常规的分割结果BigDecimal,如果操作数的类型的Integer,Long,BigInteger或BigDecimal:
例如,请参阅本教程:
如果操作数是Float或Double,则除法运算符"/"和"/ ="产生Double结果,否则产生BigDecimal结果(两个操作数都是Integer,Long,BigInteger或BigDecimal的任意组合).
[...]
例如
Run Code Online (Sandbox Code Playgroud)1/2 == new java.math.BigDecimal("0.5");[...]
可以通过转换除法的结果对整数类型执行整数除法.例如:
Run Code Online (Sandbox Code Playgroud)assert (int)(3/2) == 1I;