学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

如何用C#编写两个很打的int型数据相乘

如何用C#编写两个很打的int型数据相乘

例如100000000*100000000两个一亿相乘的算法~~~~~~~~

TOP

这样算有意思吗?晕~~~~
int的定义域没那么大,2个那么大的数相乘只是会出现错误,除非定义为double类型。才不会出现错误
编程、在编程。。。。。爱学习、爱劳动才是个好孩子,老婆才会好好爱我

TOP

就我现在的水平来说...不可能...
承接c/s物料需求计划(MRP)系统开发.有意者请至:
Email:ioriliao@tom.com
电话:13690291014 --太极工作室 编程大杂烩群:31504712

TOP

以前写过的,我找找看

TOP

在这里头:http://hi.baidu.com/visolleon/blog/item/8d2fc8af9d7507cf7cd92aa2.html

TOP

程序语言中整数类型的大小都是有限的,在C#中int(System.Int32)的取值范围为:-2,147,483,648 到 2,147,483,647;但如果实际运用中,有一个数大于2,147,483,647或者小于-2,147,483,648,那就可能出错,导致无法运算,下面的程序运用乘法的运算方法,用位数字的叠加来组合形成正确的结果,程序如下(此程序未考虑负数):

using System;
using System.Collections.Generic;
using System.Text;

namespace BigNumber
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Number A is : ");
            string Aa = Console.ReadLine();
            int[] A = new int[Aa.Length];
            for (int i = 0; i < Aa.Length; i++)
            {
                A[Aa.Length-1-i] = Convert.ToInt32(Aa.Substring(i, 1));
                //Console.WriteLine(A[Aa.Length - 1 - i]);
            }

            Console.Write("Number B is : ");
            string Bb = Console.ReadLine();
            int[] B = new int[Bb.Length];
            for (int i = 0; i < Bb.Length; i++)
            {
                B[Bb.Length-1-i] = Convert.ToInt32(Bb.Substring(i, 1));
                //Console.WriteLine(B[Bb.Length - 1 - i]);
            }
            int[,] sum = new int[Aa.Length,Bb.Length];
            int[] wsum = new int[Aa.Length + Bb.Length];
            for (int i = 0; i < Aa.Length; i++)
            {
                for (int j = 0; j < Bb.Length; j++)
                {
                    sum[i,j] = A[i]*B[j];
                    wsum[i + j] = wsum[i + j] + sum[i, j];
                    if (wsum[i + j].ToString().Length > 1)
                    {
                        wsum[i + j + 1] = wsum[i + j + 1] + wsum[i + j]/10;
                        wsum[i + j] = Convert.ToInt32(wsum[i + j].ToString().Substring(1, 1));
                    }
                    Console.WriteLine("sum[" + i + "," + j + "] = {0}", sum[i, j]);
                }
            }
            string end = "";
            for (int m = 0; m < Aa.Length + Bb.Length; m++)
            {
                Console.WriteLine("wsum[" + m + "] = {0}", wsum[m]);
                end = wsum[m].ToString() + end;
            }
            Console.WriteLine();
            Console.WriteLine("================================================================");
            Console.WriteLine("计算结果为:{0}",end);
            Console.ReadLine();
        }
    }
}

TOP

嗯,我以前学汇编的时候也是用多字节位数叠加实现的无限长度四则运算的,和上面的方法类似

TOP

发新话题