首页 > 解决方案 > 如何获得数字的某个小数位?

问题描述

我想实现 RadixSort 并获取特定小数位的数字。

 int num (int elem, int place)
      --- if element == 12225 and place == 0
      --- expected output would be 5 (starting to count by right) 
      --- if place == 4 expected output would be 1

我写了这个方法。但它既不工作也不高效。

    static int key(int element, int decimalPlace) {
        if (element < 0)
            throw new IllegalArgumentException("invalid argument");
        int tmp = (int) (Math.log10(element) + 1);
        if (decimalPlace > tmp)
            return 0;
        else {
            return Integer.parseInt(String.valueOf(Integer.toString(element).charAt(tmp - decimalPlace)));
        }
    }

我想我应该能够更有效地解决这个问题

标签: javasortingdecimal

解决方案


我会做:

return ( element / (int) Math.pow(10, decimalPlace) ) % 10

推荐阅读