ファジージョブの粒度を維持する必要があるため、パラメーターとして受け取る関数を作成しました。
- 粒度 (0 と 1 の間の double、0 は含まれません)
- 必要に応じて変換する値 (0 より大きい double)
そして、正しい粒度で新しい値を返します。
これは私が持っている機能です:
public static double preserveGranularity(double granul, double value){
double integerValue= (double)(int)value;
if(granul == 1)
return integerValue;
double decimal = value - integerValue;
long factor = Math.round(decimal/granul);
return integerValue + granul*factor;
}
例:
- preserveGranularity(0.25, 7.7) は 7.75 を返す必要があります
- preserveGranularity(0.01, 0.009) は 0.01 を返す必要があります
ほとんどの値でうまく動作しますが、すべてではありません (例: preserveGranularity(0.2, 0.57)=0.6000000000000001、0.6 を返す必要があります)。
よろしく
PSこの質問で間違いを犯して申し訳ありません。これは私の最初のものです