方法一:直接利用.NET FrameWork 4.0中自带的System.Numeric类库

添加了对此类库的引用后,直接调用方法即可计算:

View Code

1 BigInteger num1 = BigInteger.Parse("乘数一");2 BigInteger num2 = BigInteger.Parse("乘数二");3 Console.WriteLine(num1* num2);4 Console.ReadKey();

方法二:自己手写一个计算的方法

思路:因为两个大数相乘,结果可能已经超过了C#定义的变量的范围,所以我们应该使用字符串代替的处理想法,将数字相乘转化为字符串的处理!具体代码如下:

View Code

 1             static string getbackresult(string s1, string s2) 2             { 3                 string lastResult = ""; 4                 int ten1 = -1; 5                 int[] result = new int[s1.Length + s2.Length];//用以记录计算结果 6                 for (int i = s1.Length - 1; i >=0; i--) 7                 { 8                     int c1 = Convert.ToInt16(s1[i].ToString());//从s1中从后往a前取一个数并记录这个数的位置 9                     ten1++;10                     int resultindex = result.Length - 1 - ten1;11                     for (int j = s2.Length - 1; j >=0; j--)12                     {13                         int c2 = Convert.ToInt16(s2[j].ToString());//从?s2中从后往前取一个数14                         int cc = c1 * c2 + result[resultindex];15                         if (cc > 10)16                         {17                             result[resultindex] = cc % 10;18                             int lastindex = resultindex - 1;  //往前移动一位19                             int lastvalue = result[lastindex] + cc / 10;  //把刚刚得到的十位的数字赋值到前面20                             while (cc > 10)21                             {22                                 cc = result[lastindex] + cc / 10;23                                 result[lastindex] = cc % 10;24                                 lastindex--;//进位25                             }26                         }27                         else28                         {29                             result[resultindex] = cc;30                         }31                         resultindex--;//进位32                     }33                 }34                 StringBuilder sb = new StringBuilder();35                 foreach (int item in result)36                 {37                     sb.Append(item);38                 }39                 lastResult = sb.ToString();40                 if (lastResult[0]=='0')41                 {42                     lastResult = lastResult.Substring(1);43                 }44                 return lastResult;45             }

转载于:https://www.cnblogs.com/Alpha-Fly/archive/2012/04/02/2429756.html

C#中关于处理两个大数相乘的问题相关推荐

  1. c语言实现两个大数相乘

    实现两个不限位数十进制整数的乘法函数, demon #include<stdio.h> #include<string.h>int main() {int i,j,z,k;in ...

  2. Karatsuba乘法--实现大数相乘

    Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...

  3. 高效大数乘法 c语言,华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言...

    这是我调试时间最长的程序,整整弄了两天才弄好,不过还有点数组下标越界的小问题没解决!但是结果是正确的! 算法思想:将两个相乘的数分别放在两个数组中,之后用一个数,逐位的乘以另一个数,在将乘积的和放在另 ...

  4. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  5. c语言中大数相乘的方法,C++实现大数相乘算法

    本文实例为大家分享了C++实现大数相乘的具体代码,供大家参考,具体内容如下 首先说一下乘法计算的算法:同样是模拟人工计算时的方法. 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘 ...

  6. java输出两个整数的积_如何检查Java中的两个数字相乘是否会导致溢出?

    如何检查Java中的两个数字相乘是否会导致溢出? 我想处理两个数字相乘导致溢出的特殊情况. 代码看起来像这样: int a = 20; long b = 30; // if a or b are bi ...

  7. matlab计算两向量的乘积,matlab中两个函数相乘

    变量名最多不超过63个字符; ? 变量名区分大小写; ? Matlab提供的标准函数名以及命令名必须用小写字母; ? 变量名中不能包含空格.标点.运算符. 1.变量及其...... 中的元素; (2) ...

  8. 【Pandas】解决在pandas中的两个正数相乘结果为负值

    前几天使用sklearn拟合数据,发现曲线特别离谱,找了很久的原因,最后发现是因为我在代码中对特征进行了特征之间的相乘操作,来增加特征的维度,但是两个正数相乘之后,变成了负数: 下图中 xi 为所有数 ...

  9. 线性代数中两个向量相乘_加两个向量| Python的线性代数

    线性代数中两个向量相乘 Prerequisite: Linear Algebra | Defining a Vector 先决条件: 线性代数| 定义向量 In the python code, we ...

最新文章

  1. 从Varchar转换为 datetime
  2. Boosted Tree:一篇很有见识的文章
  3. raise errorclass(errno, errval) sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, u
  4. 关于质量的联想:消费示范效应
  5. 汽车行业持续亏损?奥迪:不存在的
  6. JAVA中isEmpty、null、的区别
  7. Marching Cubes
  8. z=rand()%i c语言,C语言关于产生随机数文章转载两篇(一)
  9. 基于小波变换的数字水印技术
  10. 当我在荒废时间的时候会有多少人在拼命
  11. win10系统服务器管理器,win10服务管理器,详细教您Win10服务管理器怎样打开
  12. android 11.0 去掉音量键电源键组合键的屏幕截图功能
  13. html 限制每行字数,毕业论文每行字数的设置
  14. 关于自己学习安卓的体会
  15. mysql sp who_sp_who使用
  16. 如何在以太坊网络上发布自己的代币
  17. UDS-RequestDownload(0x34) service
  18. 基金的估值原来这么简单,一文看懂
  19. VS2008 工程运行时候的一个R6034问题
  20. git clone 修改配置 设置代理 加速

热门文章

  1. 浅析网站SEO整站优化的优势!
  2. 两对光纤收发器用网线连接_光纤那么快,路由器和电脑之间为何不用光纤连接,反而用普通网线...
  3. 开发日记-20190712 关键词 读书笔记 《Perl语言入门》Day 8
  4. 鸿洋android屏幕适配四部曲-传送门
  5. 设计模式-策略模式,观察者模式,装饰者模式,静态工厂模式,工厂方法模式
  6. Excel表格快速将公式运用到一整列
  7. 使用netty编写IM通信界面
  8. BZOJ4105 THUSC2015平方运算(线段树)
  9. tcp/ip通信中udp头部结构udphdrp-check校验计算
  10. d3.js——比例尺的使用