Java整数部分填充
很抱歉,我最初想用php来做,但后来意识到我会在代码的另一部分用Java来做 所以我需要用整数部分至少2个字符来格式化数字 2.11->02.11Java整数部分填充,java,numbers,format,pad,Java,Numbers,Format,Pad,很抱歉,我最初想用php来做,但后来意识到我会在代码的另一部分用Java来做 所以我需要用整数部分至少2个字符来格式化数字 2.11->02.11 22.11->22.11 222.11->222.11 2.1111121->02.1111121 double x=2.11; System.out.println(String.format("%08.5f", x)); 可以做到,但它讨厌右尾随零,我想有一个任意大的浮动部分 String.format("%02d%s", (int) x,
22.11->22.11
222.11->222.11
2.1111121->02.1111121
double x=2.11;
System.out.println(String.format("%08.5f", x));
可以做到,但它讨厌右尾随零,我想有一个任意大的浮动部分
String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))
完全丑陋和不真实(给出02.1099…)
将截断浮动部分
String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))
thx对于任何更好的解决方案这里有一个使用DecimalFormat的单行程序:
new DecimalFormat("00." + (x + "").replaceAll(".", "#")).format(x)
它将您的小数格式设置为00。###################################################的长度来自于
如果您愿意,可以使用
String.valueOf(x)
代替(x+)
。我能提供的最好的方法是
public static String pad(String s){
String[] p = s.split("\\.");
if (2 == p.length){
return String.format("%02d.%s", Integer.parseInt(p[0]), p[1]);
}
return String.format("%02d", Integer.parseInt(p[0]));
}
pad(String.valueOf(1.1111111 8))->01.1111111 8将其更改为
String.format(“%8.5f”,x)
(8之前没有0)。我需要将整数部分填充为0,以便整数部分至少有2个字符,然后将其更改为String.format(“%02.5f”,x)
,如果整数部分中的数字超过2位,它将打印整个整数部分。它给出2.11000,我需要02.11。你知道小数部分需要多少位数吗?因为您可以毫无问题地使用String.format(“%02f”,x)
。我想你应该多举些例子说明你需要什么。你甚至可以使用一个对象来为你做这项工作(但它需要更多的代码行)我不希望截断,也不希望失去准确性很好,比如新的DecimalFormat(“00.”+StringUtils.repeat(“#)”,(x+).length())。格式(x)”#超出了什么都不做:试试这个:float f=(float)22.2222;System.out.println(新的十进制格式(“00.”+(“+f”).replaceAll(“.”,“#”)格式(f));#这不是原因。你知道,在所有编程语言中,双精度和浮点数都是有限的。即使如此,这种限制也会根据您使用该值的位置和方式而有所不同。看,Stack Overflow的#1 Jon Skeet以及他关于许多类似案例的回答。