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

How to format a number in Java and also keep the decimals?

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

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

有什么建议吗?

使用双精度除数 1000d

String durationStr = formatter.format(duration / 1000d);

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

BigDecimal bd = new BigDecimal(duration).scaleByPowerOfTen(-3);
String durationStr = formatter.format(bd);

通过使用 BigDecimal 而不是 double,您知道您仍然完全 您真正考虑的价值,而不是简单地"the nearest approximation that double can hold".

您可能还想要:

formatter.setMinimumFractionDigits(3);
formatter.setMaximumFractionDigits(3);

... 以确保您始终准确获得 5 位数字。 (例如,假设您希望 1 秒为“1.000”。)