如何格式化Java中的数字并保留小数?

Tey*_*ysz 1 java format

我试图将毫秒显示为秒,同时保持小数,例如我有1234毫秒,我想将其显示为1.234秒.

Decimal duration = 1234;
NumberFormat formatter = new DecimalFormat("#0.000");
String durationStr = formatter.format(duration / 1000);
Run Code Online (Sandbox Code Playgroud)

有什么建议我怎么做到这一点?

Jon*_*eet 5

听起来你应该使用BigDecimal- BigDecimal从长处创建一个,然后将其缩放3个位置:

BigDecimal bd = new BigDecimal(duration).scaleByPowerOfTen(-3);
String durationStr = formatter.format(bd);
Run Code Online (Sandbox Code Playgroud)

通过使用BigDecimal替代的double,你知道,你仍然有确切你真的考虑,而不是简单的"是最近的逼近值double可容纳".

你可能也想要:

formatter.setMinimumFractionDigits(3);
formatter.setMaximumFractionDigits(3);
Run Code Online (Sandbox Code Playgroud)

...确保您总是得到5位数.(假设您希望1秒为"1.000".)