Java - 仅打印小数部分的格式编号

时间:2011-04-07 16:13:24

标签: java numbers format decimal

在Java中有一种简单的方法可以格式化十进制,浮点数,双精度等,只打印数字的小数部分吗?我不需要整数部分,甚至/特别是如果它是零! 我目前正在使用String.indexOf(“。”)方法与String.substring()方法结合来​​挑选小数点右侧的数字部分。有更清洁的方法吗?在DecimalFormat类或printf方法中找不到任何内容。两者总是在小数位前返回零。

3 个答案:

答案 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);