[英]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.