在Java中,有没有一种简单的方法来格式化小数、浮点数、双精度等只打印数字的小数部分?即使整数部分为零,我也不需要它!目前,我正在使用String.indexOf(".")方法结合String.substring()方法来拆分小数点右侧的数字部分。有没有更简洁的方法呢?在DecimalFormat类或printf方法中都找不到任何内容。两者在小数点前始终返回零。
您可以通过将double类型强制转换为long类型来去除值的整数部分。然后,您可以从原始值中减去这个整数部分,以便只剩下小数部分:
double val = 3.5;
long intPartVal= (long) val;
double fracPartVal = val - intPartVal;
System.out.println(fracPartVal);
如果你想要去掉前导零,可以这样做:
System.out.println(("" + fracPartVal).substring(1));
使用“%”将数字除以1并获取余数,以获取小数部分。使用DecimalFormat格式化结果(使用“#”符号抑制前导0):
double d1 = 67.22;
double d2 = d1%1;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d2));
这会打印出 .22
这将打印出0.3
double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);