簡體   English   中英

減去時保持前導零

[英]Keep leading Zeros when subtracting

我想知道在減去數字(特別是兩個long)時如何保持前導0。

假設1000-0999 = 0001

我也想保留很長的答案。 因此,僅在前面添加0不會起作用。

有什么想法嗎?

這是打印問題:

long n = 1000 - 999;
String s = String.format("%04d", n);  // 0001

更多信息: Formatter

前導零只是標點符號。 整個概念僅適用於應該表示數字的字符串。 實際上,在生成這樣的字符串之前,即使“數字”的概念也毫無意義。

因此,您真正的問題不是“減時如何保持前導零?”,而是“將結果格式化為字符串時如何獲得前導零?”

因此,例如,要使用(至少)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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM