与えられた精度でdoubleをstringに変換する必要があります。String.format("%.3f", value)
(またはDecimalFormat)は機能しますが、ベンチマークでは、それほど高速ではないDouble.toString
変換(私のマシンで100万の数値を変換するのに約1〜3秒)と比較しても遅いことが示されています。
それを行うためのより良い方法はありますか?
更新:ベンチマーク結果
0から1000000までの乱数、結果はミリ秒あたりの操作数(Java 1.7.0_45)
Benchmark Mean Mean error Units
String_format 747.394 13.197 ops/ms
BigDecimal_toPlainString 1349.552 31.144 ops/ms
DecimalFormat_format 1890.917 28.886 ops/ms
Double_toString 3341.941 85.453 ops/ms
DoubleFormatUtil_formatDouble 7760.968 87.630 ops/ms
SO_User_format 14269.388 168.206 ops/ms
アップデート:
Java 10、+リュウ
Mode Cnt Score Error Units
String_format thrpt 20 998.741 ± 52.704 ops/ms
BigDecimal_toPlainString thrpt 20 2079.965 ± 101.398 ops/ms
DecimalFormat_format thrpt 20 2040.792 ± 48.378 ops/ms
Double_toString thrpt 20 3575.301 ± 112.548 ops/ms
DoubleFormatUtil_formatDouble thrpt 20 7206.281 ± 307.348 ops/ms
ruy_doubleToString thrpt 20 9626.312 ± 285.778 ops/ms
SO_User_format thrpt 20 17143.901 ± 1307.685 ops/ms