以给定的精度进行快速双精度到字符串转换
2022-09-04 07:30:47
我需要将双精度转换为字符串。 (或DecimalFormat)可以完成这项工作,但基准测试显示,即使与不是很快的转换相比,它的速度也很慢(在我的机器上转换100万个数字大约需要1-3秒)。String.format("%.3f", value)
Double.toString
有没有更好的方法来做到这一点?
更新:基准测试结果
从 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, +ryu
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