int accel = (int)Math.abs(randomAccel);
该行执行3个步骤
- 获取的
randomAccel
- 绝对值的值强制转换为
int
(浮点数被截断)
- 指定
int
的值为accel
现在让我们来看看当输入在[-9.4182062E-9,9.593071E- 8]
范围内时会发生什么(顺便说一下-5.485747E-5
不在这个范围内。)
Input value -9.4E-9 = -0.0000000094
1. -9.4E-9 converted to 9.4E-9
2. 9.4E-9 cast to int, fractional part is removed. Value is 0
3. 0 is assigned to `accel`
如果你只是想最显著的数字,你可以通过10^8
繁殖,并看看是否值大于0
更大,如果是则trucate,否则乘以10再截断:
int accel = 0;
r = Math.abs(randomAccel) * 100000000;
if(r >= 10) {/* error out of range */}
else if(r > 0) accel = (int)r;
else
{
r *= 10;
accel = (int)r;
}
http://stackoverflow.com/q/1295424/2282538 – Tyler