如何格式化 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”。)
我试图将毫秒显示为秒,同时保留小数点,例如我有 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”。)