| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1758 人关注过本帖
标题:如何用C#编写两个很打的int型数据相乘
只看楼主 加入收藏
wangzhenchuan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-23
收藏
 问题点数:0 回复次数:6 
如何用C#编写两个很打的int型数据相乘
例如100000000*100000000两个一亿相乘的算法~~~~~~~~
搜索更多相关主题的帖子: int 相乘 数据 编写 
2008-05-06 17:28
xyb157
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-11-21
收藏
得分:0 
这样算有意思吗?晕~~~~
int的定义域没那么大,2个那么大的数相乘只是会出现错误,除非定义为double类型。才不会出现错误

编程、在编程。。。。。爱学习、爱劳动才是个好孩子,老婆才会好好爱我
2008-05-06 21:24
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
就我现在的水平来说...不可能...

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-05-07 13:54
visolleon
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:71
专家分:182
注 册:2007-1-16
收藏
得分:0 
以前写过的,我找找看

2008-05-07 14:12
visolleon
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:71
专家分:182
注 册:2007-1-16
收藏
得分:0 
在这里头:http://hi.baidu.com/visolleon/blog/item/8d2fc8af9d7507cf7cd92aa2.html

2008-05-07 14:13
visolleon
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:71
专家分:182
注 册:2007-1-16
收藏
得分:0 
程序语言中整数类型的大小都是有限的,在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();
        }
    }
}

2008-05-07 14:14
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
嗯,我以前学汇编的时候也是用多字节位数叠加实现的无限长度四则运算的,和上面的方法类似

女侠,约吗?
2008-05-07 19:57
快速回复:如何用C#编写两个很打的int型数据相乘
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018138 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved