除以0而不是无穷大

时间:2016-07-19 14:14:36

标签: actionscript-3 math

正如数学原理所说,当一些数除以0时,它将是infinite,但在我的情况下,当它变​​为无穷大时我需要它1,我怎样才能实现此?

if(obj.x > -180){
    left_fade.alpha = -(1/obj.x);
} else{
    left_fade.alpha = 0;
}

3 个答案:

答案 0 :(得分:0)

听起来很简单,我希望我不会完全忽略这一点......

if(obj.x > -180){
    left_fade.alpha = (obj.x==0) ? 1 : -(1/obj.x);
} else{
    left_fade.alpha = 0;
}

如果obj.x是浮点数而不是整数,那么这可能会有问题。在这种情况下,您必须定义一个阈值来决定它是否为零:

if(obj.x > -180){
    left_fade.alpha = (Math.abs(obj.x)<1e-10) ? 1 : -(1/obj.x);
} else{
    left_fade.alpha = 0;
}

答案 1 :(得分:0)

当你的分母接近1(从更大的值),商变得越来越小。但它变得越来越大(接近无穷大),因为分母从1接近零。这就是为什么你需要对整数1以下的任何东西进行约束。试试这个:

if(obj.x > -180 && Math.abs(obj.x) >= 1)
{
    left_fade.alpha = -(1/obj.x);
} else {
    left_fade.alpha = 0;
}

答案 2 :(得分:0)

建议的解决方案都很好......但您可以利用 falsy 值来缩短和简洁您的代码

在布尔语句中,

0被视为false,因此在OR语句中将返回以下值0 || 1 -> 1

所以你的分工可以简单地成为

left_fade.alpha = -(1/ (obj.x || 1));

表示:用obj.x除1,如果obj.x为0则用1