查找整数的目标数字
Find target digit of an integer
我可以使用什么方法来 return 整数的特定数字?
//val = number to find target digit on
//dig = the digit to return from right-side
private int digit(int val, int dig) {
String num = "" + val;
return Character.getNumericValue(num.charAt(num.length-dig));
}
例如,如果 val
是“48602”,我想获取第二位数字(小数点),它会 return“0”。
这是一种丑陋的方法,但是有没有完全不使用字符串的方法?也许用模数?如果我想找到第 7 个数字(百万分之一)怎么办,这个方法甚至都行不通(这个数字必须被解析为“0048602”)。
可能用于基数排序(根据有效数字将数字放入 "buckets")。我发现使用这种方法相对费力。
有个想法
private int digit(int val,int dig){
int div = 1;
for(int i=0;i<dig;i++)
div*=10; //make 10^dig
val/=div; //remove the smaller digits
return val%10; //return only one digit
}
未测试
编辑 更好的方法:
private int digit(int val,int dig){
int div = (int)Math.pow(10,dig);
val/=div; //remove the smaller digits
return val%10; //return only one digit
}
您可以使用以下代码完成:
public int getDigit(int n, int i) {
return (n / ((int) Math.pow(10, i))) % 10;
}
你可以使用
return ((val%(Math.pow(10, dig))) - (val%(Math.pow(10, dig-1))))/(Math.pow(10, dig-1));
哪里
(val%(Math.pow(10, dig)))
去掉前面的数字
- (val%(Math.pow(10, dig-1)))
减去尾随数字,
/(Math.pow(10, dig-1)
去掉剩余的零
我可以使用什么方法来 return 整数的特定数字?
//val = number to find target digit on
//dig = the digit to return from right-side
private int digit(int val, int dig) {
String num = "" + val;
return Character.getNumericValue(num.charAt(num.length-dig));
}
例如,如果 val
是“48602”,我想获取第二位数字(小数点),它会 return“0”。
这是一种丑陋的方法,但是有没有完全不使用字符串的方法?也许用模数?如果我想找到第 7 个数字(百万分之一)怎么办,这个方法甚至都行不通(这个数字必须被解析为“0048602”)。
可能用于基数排序(根据有效数字将数字放入 "buckets")。我发现使用这种方法相对费力。
有个想法
private int digit(int val,int dig){
int div = 1;
for(int i=0;i<dig;i++)
div*=10; //make 10^dig
val/=div; //remove the smaller digits
return val%10; //return only one digit
}
未测试
编辑 更好的方法:
private int digit(int val,int dig){
int div = (int)Math.pow(10,dig);
val/=div; //remove the smaller digits
return val%10; //return only one digit
}
您可以使用以下代码完成:
public int getDigit(int n, int i) {
return (n / ((int) Math.pow(10, i))) % 10;
}
你可以使用
return ((val%(Math.pow(10, dig))) - (val%(Math.pow(10, dig-1))))/(Math.pow(10, dig-1));
哪里
(val%(Math.pow(10, dig)))
去掉前面的数字
- (val%(Math.pow(10, dig-1)))
减去尾随数字,
/(Math.pow(10, dig-1)
去掉剩余的零