簡體   English   中英

解析時不圓化是正常的嗎? 的NumberFormat

[英]Is it normal that is not rounding while parsing? NumberFormat

為什么它在解析過程中不圓?

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

數字計數僅用於格式化。 解析數字時,總是得到與輸入最匹配的數字,即使它的數字比NumberFormat用於格式化的數字更多。

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

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

要獲得你想要的東西,你需要調用加載的實現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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM