Java アプリケーションに丸めエラーがあることがわかりました。丸めに使用された方法は次のとおりです。
public static double round(double value,double precision)
{
return Math.round(value * precision) / precision;
}
これにはエラーが発生する可能性があります (つまり、round(138.515,100) は 138.52 を返し、138.51 を返す必要があります)。そこで、次のラウンダーを作成しました。
// Mikeldi's rounder
public static double round2DecimalPlaces(double value,int decimalPlaces)
{
int s = value<0?-1:1;
double p = 1;
for (int i = 0; i < decimalPlaces; i++) {
p*=10;
}
double n = (long) value;
double d = ((value*10*p)-(n*10*p));
d +=s*5;
d /= 10;
d = (long)d;
d /= p;
return d+n;
}
このメソッドを作成したのは、他の丸め方法ではシステムにあまりにも多くのレイテンシが追加されたためです (低レイテンシ システム)。これは、以前よりも約 10 倍高速です。
注: このラウンダーは、正の decimalPlaces (または 0) に丸めるためにのみ使用されます。
この新しいラウンダーで見たことのない問題はありますか?
ありがとう、