【发布时间】:2017-09-30 10:01:07
【问题描述】:
昨天我尝试自己探索 DecimalFormat 方法 .format() 及其所有占位符的行为以及它们的作用。
所以我写了两个数字并尝试了不同的模式。使用“#.##”,所有不重要的零都被删除,使用“0000.00”,该方法在数字前面添加前导零。没关系,但后来我尝试了一些奇怪的模式,看看会发生什么。
使用模式“33333.##”,最终输出真的很奇怪。您可以在下面看到我的代码:
DecimalFormat df = new DecimalFormat("33332.##");
double a= 222.46705219;
double b=-102.000;
System.out.println(df.format(a));
System.out.println(df.format(b));
它的输出是:
33332222,47
-33332102,0
与数字相同的输入,但使用模式“33033.##”给出结果:
33222,4732
33102
我知道程序在 0 的位置添加了格式化数字,但是为什么当零不作为占位符显示时,该方法仍然舍入第一个数字和(显然)第二个数字?
为什么我的第一个数字被舍入到它的第二个数字,但第二个数字 (b) 在末尾打印了一个零?
为什么当 0 占位符出现在“33033.##”程序的中间时在其位置插入格式化的数字 a 但不在数字 b 的末尾打印“33”?
我真的不知道如何解释这种行为。
【问题讨论】:
标签: java formatting decimalformat