在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));
这将打印0.3
double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);