如何在不使用 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
我想知道是否有人知道如何使用数学从左边截断数字(从左边开始一位一位地删除数字)。
我可以使用简单的除法从右边截断数字:
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