我有一个随机数,假设适合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;
}
答案 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)
[0,1]
)