Java 减法时保持前导零

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

我想知道如何在减去数字时保持0的前导,特别是两个长

假设1000-0999=0001

我想把答案也保留很久。因此,仅仅在前面添加0是行不通的


有什么想法吗?

这是一个打印问题:

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
值时,您永远不会保持前导零,甚至第一个非零位。)