Java - 将数字格式化为仅打印小数部分

7

在Java中,有没有一种简单的方法来格式化小数、浮点数、双精度等只打印数字的小数部分?即使整数部分为零,我也不需要它!目前,我正在使用String.indexOf(".")方法结合String.substring()方法来拆分小数点右侧的数字部分。有没有更简洁的方法呢?在DecimalFormat类或printf方法中都找不到任何内容。两者在小数点前始终返回零。


你想要显示小数点吗? - Derek Mahar
是的,我想显示小数点。 - Fred
3个回答

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

我相信它仍然会打印前导零。我需要它打印:.5,而不是0.5。 - Fred
+1 这对我来说是新的。这里有另一个例子 - mre
2
已经添加了去除前导零的方法,但我认为这基本上是你已经在做的。不过,我认为仍然减去整数部分应该是更优雅的解决方案。 - jberg

5

使用“%”将数字除以1并获取余数,以获取小数部分。使用DecimalFormat格式化结果(使用“#”符号抑制前导0):

double d1 = 67.22;
double d2 = d1%1;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d2));

这会打印出 .22


0

这将打印出0.3

double x = 23.8;
int y =(int)x;
float z= (float) (x % y);
System.out.println(z);

这个方法可以运行,但是过于复杂。只需要取余数模1或减去整数部分即可。 - poolie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接