Java NumberFormat:setMaximumFractionDigits-未给出预期结果
试图找出以下代码没有输出预期结果的原因。请告知。多谢各位Java NumberFormat:setMaximumFractionDigits-未给出预期结果,java,Java,试图找出以下代码没有输出预期结果的原因。请告知。多谢各位 import java.text.*; public class Test { public static void main(String[] args) { String s = "987.123456"; double d = 987.123456d; NumberFormat nf = NumberFormat.getInstance(); nf.s
import java.text.*;
public class Test {
public static void main(String[] args) {
String s = "987.123456";
double d = 987.123456d;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(5);
System.out.println(nf.format(d) + " ");
try {
System.out.println(nf.parse(s));
} catch (Exception e) {
System.out.println("got exc");
}
}
}
输出:
987.12346 // Expected 987.12345 not 987.12346
987.123456
您的第二次打印没有格式化已解析的
双精度
// System.out.println(nf.parse(s));
System.out.println(nf.format(nf.parse(s))); // <-- 987.12346
你为什么会这样想?NumberFormat
正在取整。请看Sotiri,我希望如此,因为我假设,因为我将最大分数数字设置为5,对象应该返回5个不变的数字,但是没有意识到正在发生舍入。我正在阅读同一本书Rami(SCJP Sun认证的Java 6程序员),并且有完全相同的问题。感谢您帮助澄清这是四舍五入。对于其他看这个问题的人,可以在Java证书测试/考试中提出这个问题。好好学习!
nf.setMaximumFractionDigits(5);
nf.setRoundingMode(RoundingMode.DOWN);