【发布时间】:2014-08-19 02:21:00
【问题描述】:
有没有办法创建一个没有最大小数位数的NumberFormat 实例?一个明显的解决方案是
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(Integer.MAX_VALUE);
但我想知道是否有更明确的方式来指定不应该有精度限制。
【问题讨论】:
有没有办法创建一个没有最大小数位数的NumberFormat 实例?一个明显的解决方案是
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(Integer.MAX_VALUE);
但我想知道是否有更明确的方式来指定不应该有精度限制。
【问题讨论】:
来自 NumberFormat API (http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html):
"setParseIntegerOnly :仅影响解析,例如,如果为 true,则 "3456.78" -> 3456(并在索引 6 之后离开解析位置)如果为 false,则 "3456.78" -> 3456.78(并在之后离开解析位置index 8) 这与格式无关。”
我想如果你打电话给setParseIntegerOnly(false) 它不会担心精度限制,虽然我有点用这个来扩展事实。
啊哈!我们开始:
NumberFormat nf = NumberFormat.getInstance();
nf.setRoundingMode(RoundingMode.CEILING);
再说一次,我不确定“向无穷大舍入”是什么意思。可能是你想要这个:
nf.setRoundingMode(RoundingMode.UNNECESSARY);
http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html
【讨论】: