有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

int如何在Java中不使用字符串从左截断数字

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

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

int num = 10098;

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

这将输出我想要的:

10098
1009
100
10
1

但是,有人知道一种方法可以用另一种方法来处理整数,从左边截断数字而不转换为字符串吗


共 (3) 个答案

  1. # 1 楼答案

    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;
    }
    
  2. # 2 楼答案

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

    你必须用10的幂来称呼它。那么10100100010000

    你能做到

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

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

  3. # 3 楼答案

    试试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