在Java中将前导零添加到数字中?

2022-08-31 04:18:17

有没有更好的方法来获得这个结果?如果num的位数多于数字数,则此函数将失败,并且我觉得它应该在库的某个地方(如Integer.toString(x,“%3d”)或其他东西)

static String intToString(int num, int digits) {
    StringBuffer s = new StringBuffer(digits);
    int zeroes = digits - (int) (Math.log(num) / Math.log(10)) - 1; 
    for (int i = 0; i < zeroes; i++) {
        s.append(0);
    }
    return s.append(num).toString();
}

答案 1

字符串格式 (https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax)

在您的情况下,它将是:

String formatted = String.format("%03d", num);
  • 0 - 用零填充
  • 3 - 将宽度设置为 3

答案 2

从Java 1.5开始,您可以使用该方法。例如,要执行与示例相同的操作:String.format

String format = String.format("%0%d", digits);
String result = String.format(format, num);
return result;

在本例中,您将使用以数字形式指定的宽度创建格式字符串,然后将其直接应用于数字。此示例的格式按如下方式转换:

%% --> %
0  --> 0
%d --> <value of digits>
d  --> d

因此,如果数字等于 5,则格式字符串将变为指定宽度为 5 的整数,打印前导零。有关转换说明符的更多信息,请参阅 java 文档%05dString.format


推荐