【问题标题】:Find target digit of an integer查找整数的目标数字
【发布时间】:2015-10-06 03:03:51
【问题描述】:

我可以使用哪些方法来返回整数的特定数字?

//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”)。

可能用于基数排序(根据有效数字将数字放入“桶”中)。我发现使用这种方法比较费力。

【问题讨论】:

  • stackoverflow.com/questions/9253716/…> 看起来更简洁

标签: java digit radix-sort


【解决方案1】:

有个主意

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
}

【讨论】:

    【解决方案2】:

    您可以使用以下代码:

    public int getDigit(int n, int i) {    
        return (n / ((int) Math.pow(10, i))) % 10;
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用

          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)
      

      去掉剩余的零

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        • 2014-11-08
        相关资源
        最近更新 更多