您的位置:首页 > 理论基础

无限数加法 超出计算机表示范围 溢出 int型

2011-05-19 15:59 246 查看
/**

     * 无限数加法 超出计算机表示范围 溢出 int型

     * @param src

     * @param target

     * @return

     */

    public String addition(String src,String target)

    {

        String result="";

        char[] tempSrcs=src.toCharArray();

        char[] tempTargets=target.toCharArray();

        int lenSrc=tempSrcs.length;

        int lenTarget=tempTargets.length;

       

        //反转  我喜欢从0开始

        char[] srcs=new char[lenSrc];

        char[] targets=new char[lenTarget];

        for (int i = 0; i < tempSrcs.length; i++) {

            srcs[i]=tempSrcs[lenSrc-i-1];

        }

        for (int i = 0; i < tempTargets.length; i++) {

            targets[i]=tempTargets[lenTarget-i-1];

        }

       

        //计算

        int maxNum=Math.max(lenSrc , lenTarget);

        int temp=0;//进位

        int tempSrc=0;//临时src变量

        int tempTarget=0;//临时target变量

        for (int i = 0; i < maxNum; i++) {

            tempSrc=i<lenSrc?((int) srcs[i] -(int) '0'):0;//取

            tempTarget=i<lenTarget?((int) targets[i] -(int) '0'):0;//取

            result=(tempSrc+tempTarget+temp)%10+result;//计算

            temp=(tempSrc+tempTarget+temp)/10;//计算进位

        }

        //是否需要最高位进位

        if(temp==1)

        {

            result="1"+result;

        }

        return result;

    }

   

    public void addition()

    {

        System.out.println(addition("1111111111111111111111111111111111111111111111111", "999999999999999999999999999999999999999999999999999999999999999999"));

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string
相关文章推荐