我想将圆形模式设置为我的十分态图上的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()有效,所以也许这是一个解决问题?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top