在Android中使用十进制格式舍入一半

Ken*_*and 4 java eclipse android rounding java-6

我想在我的DecimalFormat上将舍入模式设置为HALF_UP,但是eclipse告诉我在DecimalFormat类上没有setRoundingMode().我的项目属性(以及整个Eclipse属性)使用的是1.6编译器.developer.android.com网站说我可以使用Java 5或6,所以我不确定问题是什么.

import java.math.RoundingMode;
import java.text.DecimalFormat;

completedValueFormatter = NumberFormat.getNumberInstance(); DecimalFormat completedDecimalFormat = (DecimalFormat)completedValueFormatter; completedDecimalFormat.setRoundingMode(RoundingMode.HALF_UP);

我也尝试使用android工具生成一个基于ant的项目,在项目中尝试了这个代码,并得到了相同的编译错误.所以它似乎与Eclipse无关.它似乎与Android API有关.

有什么建议?

Ken*_*and 8

这并没有真正回答为什么我不能在DecimalFormat中使用Java 6 .setRoundingMode(RoundingMode)方法,但它至少是一种解决方法.

int numDigitsToShow = this.completedValueFormatter.getMaximumFractionDigits();
BigDecimal bigDecimal = new BigDecimal(valueToBeRounded);
BigDecimal roundedBigDecimal = bigDecimal.setScale(numDigitsToShow, RoundingMode.HALF_UP);

return this.completedValueFormatter.format(roundedBigDecimal.doubleValue());
Run Code Online (Sandbox Code Playgroud)

我用我需要舍入的值创建一个BigDecimal,然后我得到一个该值的BigDecimal,并将比例设置为我需要将我的值舍入到的数字位数.然后我将该舍入值传递给我原来的NumberFormat以转换为String.

如果有人有更好的解决方案,我全都耳朵!