为什么它在解析过程中不圆?
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
答案 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