Java 从长字符串转换为字符串时保持前导零
我正在使用Java 从长字符串转换为字符串时保持前导零,java,string,string-formatting,stringbuilder,Java,String,String Formatting,Stringbuilder,我正在使用String.format()将long转换为String。当传递大于0的数字时,它可以正常工作,但当我将前导零添加到该数字时,在输出中会得到不同的数字。我的要求是在通过前导零时向用户显示前导零。请告知 public class CreateContractNumber { public static void main(String[] args) { long account = 0000123; long schedule = 001; CreateC
String.format()
将long
转换为String
。当传递大于0的数字时,它可以正常工作,但当我将前导零添加到该数字时,在输出中会得到不同的数字。我的要求是在通过前导零时向用户显示前导零。请告知
public class CreateContractNumber {
public static void main(String[] args) {
long account = 0000123;
long schedule = 001;
CreateContractNumber ccn = new CreateContractNumber();
System.out.println("CONTRACT #: "+ccn.createContNbr(account, schedule));
}
private String createContNbr(long account, long schedule) {
StringBuilder sb = new StringBuilder();
sb.append(String.format("%07d", account);
sb.append("-");
sb.append(String.format("%03d", schedule);
return sb.toString();
}
}
实际产量:
合同#:0000083-001
预期产出:
合同#:0000123-001
长账户=0000123代码>是一个八进制数。0123年10月是12月83日,这使您的输出正确。如果您需要123 dec,只需编写longcount=123代码>作为前导零对存储在long
long account=0000123中的值没有影响代码>是一个八进制数。0123年10月是12月83日,这使您的输出正确。如果您需要123 dec,只需编写longcount=123
因为前导零对存储在long
中的值没有影响,像long
这样的类型不知道前导零。实际上,Java将任何带前导0
的数字解释为八进制数(不是十进制的数字,而是八进制格式的数字)。前导零之类的内容仅用于显示/格式化,因此应仅保留在格式化程序类或字符串中。因此,您应该在long
上进行计算,然后应用格式化程序模式以适当数量的前导零显示。像long
这样的类型不知道前导零。实际上,Java将任何带前导0
的数字解释为八进制数(不是十进制的数字,而是八进制格式的数字)。前导零之类的内容仅用于显示/格式化,因此应仅保留在格式化程序类或字符串中。因此,您应该在long
上进行计算,然后应用格式化程序模式以适当数量的前导零显示。感谢您的解释。123是这个数字应该是什么样子。谢谢你的解释。123是数字应该是什么样子。