在Android中使用十进制格式舍入一半
题
我想将圆形模式设置为我的十分态图上的Half_up,但是Eclipse告诉我,在DemalFormat类中不可用SetRoundingMode()。我的项目属性(以及整体日食属性)使用1.6编译器。 Developer.android.com网站说我可以使用Java 5或6,因此我不确定问题所在。
import java.math.RoundingMode;
import java.text.DecimalFormat;
已完成valueformatter = numberFormat.getNumberInstance(); DemalFormat completedDecimalFormat =(DemalFormat)已完成valueformatter;已完成DecimalFormat.SetRoundingMode(RoundingMode.half_up);
我还尝试使用Android工具来生成基于蚂蚁的项目,在项目中尝试了此代码,并获得了相同的编译错误。因此,它似乎与日食无关。它似乎与Android API有关。
有什么建议么?
解决方案
这并没有真正回答为什么我不能在DemalFormat中使用Java 6 .setRoundingMode(圆形模式)方法,但至少是一个工作。
int numDigitsToShow = this.completedValueFormatter.getMaximumFractionDigits();
BigDecimal bigDecimal = new BigDecimal(valueToBeRounded);
BigDecimal roundedBigDecimal = bigDecimal.setScale(numDigitsToShow, RoundingMode.HALF_UP);
return this.completedValueFormatter.format(roundedBigDecimal.doubleValue());
我创建了一个大截面的数字,然后我需要圆形的值,然后将其缩放为“标度”设置为我需要将值折成的数字数的数量。然后,我将该圆形值传递给我的原始数字format,以转换为字符串。
如果有人有更好的解决方案,我全都是耳朵!
其他提示
我怀疑这个问题是(假设我正确地阅读了文档),这是一个愚蠢的:
根据java.text.decimalformat API文档,您实际上并未获得Java 1.6 RE的运行时强度,而是获得了一个Android“增强版本”,显然不包括SetRoundingMode,坦率地说。
“这是基于RI中的标准版本的Demalformat的增强版本。新功能或更改的功能被标记为新的。”
多年来,Java的弱点是Demalformat类默认为Half_Round_up,直到JVM 1.6。可惜看到Android一直保持这种需求,以使其活着。
因此,似乎我们正在努力地努力地将BigDecimal Scale设置设置为所有需要它的应用程序,而不是仅仅能够单独依靠格式化呼叫来完成工作。不是世界末日,而是非常令人失望的Google。
当然,同一位文档说setrondingmode()有效,所以也许这是一个解决问题?