如何在不使用 String 的情况下截断 Java 中左侧的数字

How can I truncate a number from the left in Java without using String

我想知道是否有人知道如何使用数学从左边截断数字(从左边开始一位一位地删除数字)。

我可以使用简单的除法从右边截断数字:

int num = 10098;

while (num > 0){
    System.out.println(num);
    num /= 10;
}

这将输出我想要的:

10098
1009
100
10
1

但是有没有人知道一种方法可以对整数进行相反的处理,并在不转换为字符串的情况下从左侧截断数字?

您可以使用模块操作%。模块是除法的余数。

你必须用 10 的幂来调用它。所以 10, 100, 1000, 10000

你可以的

int num = 10098;
int divided = num;
int module = 1;

while (divided > 0) {
    divided /= 10;
    module *= 10;
    System.out.println(num % module);    
}

请注意,如果您不使用零填充,您将获得 98 而不是 0098 或 098。

int in = ...;

//the first number n : 10^n > in 
int mostSignificantDigit = 1;
int digits = 1;
while(mostSignificantDigit < in)
{
     mostSignificantDigit *= 10;
     digits++;
}

//create the numbers
int[] result = new int[digits];
int count = 0;
while(mostSignificantDigit != 0){
     result[count] = in % mostSignificantDigit;
     mostSignificantDigit /= 10;
}

尝试n = n % (int) Math.pow(10, (int) Math.log10(n));。找到 here.

public void test() {
    int n = 10098;
    while (n > 0) {
        System.out.println("n=" + n);
        n = n % (int) Math.pow(10, (int) Math.log10(n));
    }
}

打印

n=10098
n=98
n=8