当前位置: 代码迷 >> java >> 查找整数的目标数字
  详细解决方案

查找整数的目标数字

热度:34   发布时间:2023-07-27 09:23:17.0

我可以采用什么方法来返回整数的特定数字?

//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”,而我想获取第二个数字(十分之一),它将返回“ 0”。

这是一个丑陋的方法,但是有没有一种方法完全不用字符串? 也许与模? 如果我想找到第7位(百万分之一)怎么办,该方法甚至无法工作(该数字必须解析为“ 0048602”)。

潜在的用途是用于Radix排序(根据有效数字将数字放入“存储桶”中)。 我发现使用这种方法比较麻烦。

有个主意

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)

去除剩余的零

  相关解决方案