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

Fre*_*red 7 java format numbers decimal

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

jbe*_*erg 7

您可以通过将double转换为long来删除值的整数部分.然后,您可以从原始值中减去此值,只留下小数值:

double val = 3.5;
long intPartVal= (long) val;
double fracPartVal = val - intPartVal;
System.out.println(fracPartVal);
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱领先的零,你可以这样做:

System.out.println(("" + fracPartVal).substring(1));
Run Code Online (Sandbox Code Playgroud)

  • 添加了删除前导零的方式,但我相信它或多或少是你已经在做的.我认为减去删除数字的整数部分应该仍然是一个更有吸引力的解决方案. (2认同)

Cod*_*ber 5

除以1得到余数得到小数部分(使用"%").使用DecimalFormat格式化结果(使用"#"符号来抑制前导0):

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

这打印.22