我知道如何格式化一个双精度数,只保留可用的小数位(DP),最多保留一定数量的 DP。这个例子保留了最多4个 DP。
double d = 1.0;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1"
double d = 1.23;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.23"
double d = 1.2345678;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.2346", rounding off: bad!
现在我希望整数值例如
1.0
返回"1"
,去除不必要的.0
,使用#
格式字符提供了这种功能。但是我如何确保数字永远不会四舍五入?是否有其他方法,而不是一个任意长的#
链,例如"#.###########################################"
?或者我是否应该只使用默认的double转换为字符串,并在末尾截断
".0"
? String s = "" + d;
if(s.substring(s.length()-2).equals(".0")) {
s=s.substring(0, s.length()-2);
}
两种方法看起来都非常笨拙。
Double
而不是double
。所以我想我只需要使用(long) (double) d
而不是仅仅(long) d
(它无法编译)。 - Jean-François CorbettDouble
包装器,因为我想将这些数字包含在ArrayList中。 - Jean-François Corbett