[英]Keep leading Zeros when subtracting
我想知道在減去數字(特別是兩個long)時如何保持前導0。
假設1000-0999 = 0001
我也想保留很長的答案。 因此,僅在前面添加0不會起作用。
有什么想法嗎?
前導零只是標點符號。 整個概念僅適用於應該表示數字的字符串。 實際上,在生成這樣的字符串之前,即使“數字”的概念也毫無意義。
因此,您真正的問題不是“減時如何保持前導零?”,而是“將結果格式化為字符串時如何獲得前導零?”
因此,例如,要使用(至少)4位數字(帶前導零)來打印數字,可以使用out.printf("%04d", theNumber)
。 或在創建字符串時使用相同的格式說明符。
正如@Sotirios Delimanolis所提到的,您不能長期這樣做。 您將需要使用字符串,因為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;
}
這應該返回一個很長的字符,並在前面加上您想要的零。 我假設減法的結果永遠不會是負數。
盡管這不是此[常見]問題的當代答案,但它是一種操縱“ printf”和“ format”參數的方法。
int number = 5_000;
int length = Integer.toString(number).length();
number -= 4_999;
System.out.printf("%0" + length + "d", number);
// result : 0001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.