我想知道如何在减去数字时保持领先0,特别是两个长数。
让我们说1000 - 0999 = 0001
我想保留答案。所以只是在前面添加0就不会起作用了。
有什么想法吗?
答案 0 :(得分:6)
答案 1 :(得分:2)
前导零只是标点符号。整个概念仅适用于应该表示数字的字符串。事实上,在你制作这样一个字符串之前,即使是“数字”的概念也毫无意义。
所以你真正的问题不是“在减去时如何保持前导零?”而是“在将结果格式化为字符串时如何获得前导零?”
因此,例如,要使用(至少)4位数字(带前导零)打印数字,您可以使用out.printf("%04d", theNumber)
。或者在创建字符串时使用相同的格式说明符。
答案 2 :(得分:1)
正如@Sotirios Delimanolis所提到的,你不能用多头来做这件事。你需要使用一个字符串,因为longs不能在前面存储额外的零。试试这个:
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;
}
这应该返回一个你想要在前面的零的长。我假设减法的结果永远不会是负面的。
答案 3 :(得分:0)
虽然这不是这个[常见]问题的当代答案,但它是一种操纵“printf”和“format”参数的方法。
int number = 5_000;
int length = Integer.toString(number).length();
number -= 4_999;
System.out.printf("%0" + length + "d", number);
// result : 0001