停止某个范围内的数字

时间:2014-05-01 11:05:04

标签: java math rotation

基本问题,但我似乎无法绕过它:

我有旋转的东西,我想在一定范围内停止它。

所以如果旋转(在double中)在一定范围内,我希望它返回false。

实施例

旋转= 182,StopAt 180,准确度2.所以应该停止。

旋转= 182,StopAt 180,准确度1.所以不应该停止。

目前我有:

/**
 *
 * @return
 * number = 100, current = 105, accuracy = 10
 * Example
 * 105c / 100n = 1.05..
 * 10c / 100n = 0.1..
 */
public boolean stopAtRange(double number, double current, double accuracy)
{
    if(current / number) + accuracy)
    {
        return true;
    }
    return false;
}

4 个答案:

答案 0 :(得分:4)

在Java if中只接受布尔值,并且整数值不会转换为布尔值。

为了达到你想要的效果,你的方法应该是这样的

public boolean stopAtRange(double number, double current, double accuracy)
{
    if( Math.abs(current - number) <= accuracy)
    {
        return true;
    }
    return false;
}

如果current大于或小于number,则此工作。如果您只想在current更大或至少等于number时停止,则应移除Math.abs

我还建议使用此版本:

public static boolean stopAtRange(double number, double current, double accuracy) {
  return Math.abs(current - number) <= accuracy;
}

因为它的性能更加紧凑,并且已经过优化。

答案 1 :(得分:1)

如果current距离accuracy +/- number,则会停止播放:

public boolean stopAtRange(double number, double current, double accuracy)
{
    if( Math.abs(current - number) <= accuracy)
    {
        return true;
    }
    return false;
}

答案 2 :(得分:1)

您的问题有点令人困惑,但我会尽力帮助您。 :)

此代码无法编译:

if(current / number) + accuracy)

首先,您打开了一个支架,然后关闭了两个支架。你会想要:

if((current / number) + accuracy)

其次,这不会评估为布尔值(true或false),这是if语句工作所必需的。你想要:

public boolean stopAtRange(double number, double current, double accuracy)
{
    if(Math.abs(current - number) <= accuracy) return true;
    return false;
}

这可以解决您的数字(100和105)之间的差异,并确认它们是否在范围内(10)。

希望这有帮助!

答案 3 :(得分:0)

如果接受布尔值,而不是double。类似的东西:

public boolean stopAtRange(double number, double current, double accuracy)
{
    if(Math.abs(current-number) <= accuracy)
    {
        return true;
    }
    return false;
}