试图弄清楚为什么下面的代码没有输出预期的结果。请指教。谢谢你。
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
最佳答案
您的第二个打印不会格式化您解析的 double
。
// System.out.println(nf.parse(s));
System.out.println(nf.format(nf.parse(s))); // <-- 987.12346
要获得您要求的输出,您可以添加对
NumberFormat#setRoundingMode(RoundingMode)
的调用 - 类似于nf.setMaximumFractionDigits(5);
nf.setRoundingMode(RoundingMode.DOWN);
关于java - NumberFormat : setMaximumFractionDigits - not giving expected results,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26416378/