大整数相加算法
网站首页 文章专栏 大整数相加算法
大整数相加算法
编辑时间:2019-05-06 18:11 作者:毛毛小妖 浏览量:168 评论数:1

没啥好说的,直接上代码

package com.learning;
public class bigDecimal {
    public static void main(String[] args){
        System.out.println(bigNumberSum("4267097523189999999999" ,"9548125312989777665443"));
    }
    /**
     * 大整数相加,利用数组存储
     * 原理:利用竖式相加,对两个数进行反转,再按位相加,大于10进1,最终得到的结果再反转
     * @param num1
     * @param num2
     * @return
     */
    private static String bigNumberSum(String num1,String num2){
        //反转第一个数
        char[] charsA = new StringBuffer(num1).reverse().toString().toCharArray();
        //反转第二个数
        char[] charsB = new StringBuffer(num2).reverse().toString().toCharArray();

        //计算结果的长度为最长位数+1
        int maxLen = charsA.length > charsB.length ? charsA.length+1 : charsB.length+1;
        int result[] = new int[maxLen];
        /**
         * 算法核心
         */
        for (int i=0;i 10){
                temp = temp-10;
                result[i+1]=1;
            }
            result[i]=temp;
        }

        /**
         * 结果反转
         */
        StringBuilder sb = new StringBuilder();
        for(int i = result.length-1;i > 0;i--){
            if(i==result.length-1 && result[i] == 0){
                continue;
            }
            sb.append(result[i]);
        }
        return sb.toString();
    }
}

 

推荐文章
来说两句吧
最新评论