基本问题,但我似乎无法解决:

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

因此,如果旋转度(两倍)在一定范围内,我希望它返回false。



旋转= 182,在180处停止,精度为2。因此应停止。

旋转= 182,在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;
}

最佳答案

在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;
}


因为它更紧凑,并且针对性能进行了优化。

关于java - 将数字停在一定范围内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23406445/

10-11 08:29