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

时间:2018-07-28 11:29:16

标签: java

我当前正在使用BigDecimal,小数点后的数字位数可变。我需要能够通过减少设置的位数来格式化数字,因为当我使用format时,它会将十进制数字减少到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。精度在我的应用中很重要,格式化是为了提高可读性。

1 个答案:

答案 0 :(得分:2)

如@JB Nizet所述,您需要调整NumberFormat acc。根据您的需要。

下面是一个有效的示例:

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