将一个数字除以另一个数字,但有浮点数?

时间:2014-06-16 08:10:49

标签: java math

我有一个随机数,假设适合360.0f。我的问题是我的功能只适用于整数。如何将另一个数字均匀地上下调整(最好是最接近的)

我如何使用花车进行此操作?

以下是我所拥有的:

public static float fitNumberEvenlyIntoAnother(int number, int numberToFitInto)
{
    while(numberToFitInto % number != 0)
    {
        number += 1;

        if(Math.abs(number / 2f) > Math.abs(numberToFitInto))
        {
            Log.w("fitNumberEvenlyIntoAnother", "Oh ow, the fitNumberEvenlyIntoAnother has surpassed the number it's suppose to fit into");
        }
    }

    //This number needs to fit into the number evenly. Cannot be null or nan.
    return number;
}

2 个答案:

答案 0 :(得分:0)

而不是循环结果,只测试除法结果是否为整数:

public static float fitNumberEvenlyIntoAnother(float number, float numberToFitInto) {
    float result = numberToFitInto / number;
    if (result == Math.round(result))
        return result;
    return Float.NaN;
}

如果它不均匀,你还没有表明应该返回什么 - 这个impl返回not a number值 - 你可能想要做一些不同的事情。

答案 1 :(得分:0)

如果你想"调整" x范围内的r数字(例如[0,360[的角度),您可以执行以下操作:

double len = r.max - r.min; 
double frac = x/len - Math.floor(x/len);     
double result = frac < 0 ? r.min + len * (1 + frac) :  r.min + len * frac;

你做的是以下几点:

  • 您将范围的大小设为len(在度数的情况下为360 - 0 = 360
  • 您计算len/(x % len)
  • 如果分数为负数,则添加1
  • 结果是范围的下限加上范围长度的分数(范围[0,1]