Java 减法时保持前导零
我想知道如何在减去数字时保持0的前导,特别是两个长 假设1000-0999=0001 我想把答案也保留很久。因此,仅仅在前面添加0是行不通的Java 减法时保持前导零,java,Java,我想知道如何在减去数字时保持0的前导,特别是两个长 假设1000-0999=0001 我想把答案也保留很久。因此,仅仅在前面添加0是行不通的 有什么想法吗?这是一个打印问题: long n = 1000 - 999; String s = String.format("%04d", n); // 0001 更多信息:正如@Sotirios Delimanolis提到的,你不能用long来做这件事。您需要使用字符串,因为long不能在前面存储额外的零。试试这个: public String s
有什么想法吗?这是一个打印问题:
long n = 1000 - 999;
String s = String.format("%04d", n); // 0001
更多信息:正如@Sotirios Delimanolis提到的,你不能用long来做这件事。您需要使用字符串,因为long不能在前面存储额外的零。试试这个:
public String subtractWithZeros(long number1, long number2){
long result = number1 - number2;
String strResult = String.valueOf(result);
String strNum1 = String.valueOf(number1);
String strNum2 = String.valueOf(number2);
int totalLength = Math.max(strNum1.length(), strNum2.length());
int numOfNeededZeros = totalLength - strResult.length();
for(int i = 0;i<numOfNeededZeros;i++){
strResult = "0" + strResult;
}
return strResult;
}
公共字符串减法零(长数字1,长数字2){
长结果=编号1-编号2;
String strResult=String.valueOf(结果);
String strNum1=String.valueOf(number1);
String strNum2=String.valueOf(number2);
int totalLength=Math.max(strNum1.length(),strNum2.length());
int numofneeddzeros=总长度-strResult.length();
对于(int i=0;i前导零只是标点符号。整个概念仅适用于本应表示数字的字符串。事实上,在生成这样一个字符串之前,即使是“数字”的概念也毫无意义
所以你真正的问题不是“减法时如何保持前导零?”,而是“将结果格式化为字符串时如何获得前导零?”
因此,例如,要使用(至少)4位数字和前导零打印数字,您可以使用out.printf(“%04d”,数字)
。或者在创建字符串时使用相同的格式说明符。虽然这不是这个[常见]问题的当代答案,但这是一种操作“printf”和“format”参数的方法
int number = 5_000;
int length = Integer.toString(number).length();
number -= 4_999;
System.out.printf("%0" + length + "d", number);
// result : 0001
不能。将其格式化为字符串
。如果使用int
或long
值,则保留前导零。只是当您打印值时,它们通常会被抑制(而且您不希望一直看到它们)。(OTOH,使用float
和double
值时,您永远不会保持前导零,甚至第一个非零位。)