Java 根据目标位置的当前步骤处理下一个动画
我有一个变量Java 根据目标位置的当前步骤处理下一个动画,java,Java,我有一个变量步骤,从0开始。 我在步骤中添加的每个勾号0.025 step += 0.025f; 当步进到达=1.0时,我已到达目标位置。 移动有4个动画,所以如果我将1除以4,我需要在步长达到0.25、0.50、0.75和1.0时增加动画索引 问题是,我不能在浮点上做模数,这些数字不完全是0.25,0.50等等,我做了步进打印,这就是我得到的: 0.025 0.05 0.075 0.1 0.125 0.15 0.17500001 0.20000002 0.22500002 0.2500000
步骤
,从0开始。
我在步骤中添加的每个勾号0.025
step += 0.025f;
当步进到达=1.0
时,我已到达目标位置。
移动有4个动画,所以如果我将1除以4,我需要在步长达到0.25、0.50、0.75和1.0时增加动画索引
问题是,我不能在浮点上做模数,这些数字不完全是0.25,0.50等等,我做了步进打印,这就是我得到的:
0.025
0.05
0.075
0.1
0.125
0.15
0.17500001
0.20000002
0.22500002
0.25000003
0.27500004
0.30000004
0.32500005
0.35000005
0.37500006
0.40000007
0.42500007
0.45000008
0.47500008
0.50000006
0.52500004
0.55
0.575
0.59999996
0.62499994
0.6499999
0.6749999
0.69999987
0.72499985
0.7499998
0.7749998
0.7999998
0.82499975
0.8499997
0.8749997
0.8999997
0.92499965
0.94999963
0.9749996
0.9999996
1.0249996
例如,我不知道为什么我得到的是0.17500001
,而不是0.0175
,我希望有人能解释一下,如果可能的话,我想知道,以备将来了解
但是,我还可以做什么来将我的动画索引增量除以精灵移动的距离?我需要使用该步长值来计算它。Yo始终可以处理整数:
float valuesAsFloat = 0.325f;
int result = (int) (valuesAsFloat * 100);
int step = result / 25;
浮点问题是不可避免的,但有一些解决方案
那不是珀西!可能使用double会阻止使用0.75000001之类的值使用整数,并在需要时将其除以4value@Niton使用double也会出现同样的问题。实际上,在游戏/动画中应用double是一种过分的手段。@user3437460您是对的,刚刚测试过,给出的值类似于0.2000000029802224