解析时不圆化是正常的吗?的NumberFormat

时间:2013-09-11 14:04:52

标签: java io format number-formatting

为什么它在解析过程中不圆?

NumberFormat format = NumberFormat.getInstance();
System.out.println(format.getMaximumFractionDigits());// 3
System.out.println(format.getRoundingMode());// half even
Double dob = (Double)format.parse("1212.35656");
System.out.println(dob);// output is 1212.35656

2 个答案:

答案 0 :(得分:2)

数字计数仅用于格式化。解析数字时,您总是会得到与输入最匹配的数字,即使数字比NumberFormat用于格式化的数字更多。

要解析字符串中的数字,然后舍入到给定数量的小数位数,您可以使用BigDecimal包中的java.math

BigDecimal bd = BigDecimal("1212.35656");
double dob = bd.setScale(3, RoundingMode.HALF_EVEN).doubleValue();

答案 1 :(得分:0)

要获得您想要的内容,您需要调用加载的实现NumberFormat的格式化程序metod(在您的情况下为DecimalFromat);我刚刚在最后添加了所需的行并包含在main中:

    import java.text.NumberFormat;

    public class NumberFormatRounding {

        public static void main(String[] args) throws Exception{


            NumberFormat formatter = NumberFormat.getInstance();
            System.out.println(formatter.getMaximumFractionDigits());// 3
            System.out.println(formatter.getRoundingMode());// half even
            Double dob = (Double) formatter.parse("1212.35656");
            System.out.println(dob);// output is 1212.35656
            String formattedDob = formatter.format(dob.doubleValue());
            System.out.println(formattedDob);// output is 1212.357
        }

    }

请注意,formattedDob是一个String