在BigDecimal中设置n个小数位,并将数字格式化为Java



我目前使用的是BigDecimal,小数点后的位数可变。我需要能够在不丢失我设置的位数的情况下格式化数字,因为当我使用格式时,它会将小数位数减少到2-4。

str1 =bigDecimal.setScale(numberOfDecimalPlaces, RoundingMode.HALF_UP);
str2 = NumberFormat.getInstance().format(bigDecimal.setScale(numberOfDecimalPlaces, RoundingMode.HALF_UP));

第一个列表很好,但当我想格式化String/BigDecimal时,它会去掉小数点。

注意:小数位数从0到15不等(根据用户而定(。我使用的是Android Studio-API15/Java。精度在我的应用程序中很重要,格式化是为了提高可读性。

@JB Nizet提到,您需要根据需要调整NumberFormat。

下面是一个工作示例:

int numberOfDecimalPlaces = 6;
BigDecimal bigDecimal = new BigDecimal(11212.122323);
bigDecimal.setScale(numberOfDecimalPlaces, RoundingMode.HALF_UP);
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMinimumFractionDigits(numberOfDecimalPlaces);
System.out.println(numberFormat.format(bigDecimal));

输出:

11,212.122323

最新更新