java 进制之间的转换 10进制转化为n进制 n进制转化为10进制 10进制小数转化为n进制小数(java)

n进制之间转换

10机制转化为其他进制

 /**
     * 十进制转化为n进制
     * @param number(十进制数)
     * @param n(转化的机制)
     * @return
     */
    private static int conver10ToN(int number, int n) {
        int result = 0;
        StringBuilder sb = new StringBuilder();
        while(number > 0){
            sb.append(number % n);
            number = number / n;
        }
        result = Integer.parseInt(sb.reverse().toString());
        return result;
    }


n进制转化为10进制

/**
     * n 进制转化为10进制
     * @param number(n进制的数字)
     * @param n(是什么进制)
     * @return
     */
    public static int converNTo10(int number, int n) {
        int result = 0;
        StringBuilder sb = new StringBuilder();
        sb.append(number);
        String str = sb.reverse().toString();
        for (int i = 0; i <str.length() ; i++) {
            int mm = Integer.parseInt(str.split("")[i]);
            result = result + new Double(mm*Math.pow(n,i)).intValue();
        }
        return result;
    }

10进制小数转化为其他进制

/**
     * 10进制的小数转化为n进制,只取了十位小数
     * @param mm
     * @param n
     * @return
     */
    private static double conver10ToNByDecimal(double mm, int n) {
        double result = 0.0;
        StringBuilder sb = new StringBuilder();
        sb.append("0.");
        for (int i = 0; i < 10; i++) {
            mm = mm * n;
            int m = new Double(mm).intValue();
            sb.append(m);
            if(mm >= 1){
                mm = mm - m;
            }
        }
        System.out.println(sb);
        return result;
    }

主方法测试

~~~
方法一:
	Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int number = in.nextInt();
    int a = conver10ToN(number,n);
方法二:
    int a1 = converNTo10(number,n);
方法三:
    double f_number = in.nextDouble();
    int n1 = in.nextInt();
    double a2 = conver10ToNByDecimal(f_number,n1);
~~~

猜你喜欢

转载自blog.csdn.net/heiiochange/article/details/106313099