在Java中有一种简单的方法可以格式化十进制,浮点数,双精度等,只打印数字的小数部分吗?我不需要整数部分,甚至/特别是如果它是零! 我目前正在使用String.indexOf(“。”)方法与String.substring()方法结合来挑选小数点右侧的数字部分。有更清洁的方法吗?在DecimalFormat类或printf方法中找不到任何内容。两者总是在小数位前返回零。
答案 0 :(得分:7)
您可以通过将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 :(得分:5)
除以1并得到余数以得到小数部分(使用“%”)。使用DecimalFormat格式化结果(使用“#”符号来抑制前导0):
double d1 = 67.22;
double d2 = d1%1;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d2));
这打印.22
答案 2 :(得分:0)
这将打印0.3
double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);