用javascript实现两个大数相乘

(function (){  

var addLarge = function(n1,n2){
var carry = 0;
var ret = "";
n1=n1.toString();
n2=n2.toString();  

var len = Math.min(n1.length,n2.length);
var sln1 = n1.substr(n1.length - len,n1.length );
var sln2 = n2.substr(n2.length - len,n2.length );  

for(var i = len;i > 0; i--)
{  

var di = parseInt(sln1[i-1]);
var dj = parseInt(sln2[i-1]);  

ret = (carry + di + dj)>= 10 ? ((carry + di + dj) - 10 + ret) : ((carry+di+dj) + ret);  

carry = ((carry + di + dj) /10 ) | 0;  

}  

if(n1.length != n2.length)
{
if(n1.length > n2.length){
ret = addLarge(n1.substr(0,n1.length-len),carry.toString()) + ret;
}
else{
ret = addLarge(n2.substr(0,n2.length - len),carry.toString()) + ret;
}  

return ret;
}  

else{
if(carry> 0){
ret = carry+ ret;
}
return ret.toString();
}  

};
// 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/script/
var multiply = function(n1,n2){
var nstr1 = n1.toString();
var nstr2 = n2.toString();  

var carry = 0;
var ret = "";  

var di = 0;
var dj = 0;
var dig = "";
for(var i = nstr1.length - 1 ;i >= 0;i--)
{  

var tmp = "";
var di = parseInt(nstr1[i]) ;
for(var j = nstr2.length - 1;j >= 0;j--)
{
var dj = parseInt(nstr2[j]);
var r = di*dj + carry;  

if(r >= 10)  {
carry =(r / 10) | 0;
tmp = (r%10) + tmp;
}else{
carry=0;
tmp = r + tmp;
}  

}  

if(carry > 0){
tmp = carry.toString() + tmp;
carry = 0;
}  

if(i < nstr1.length -1)
{
ret = addLarge (ret ,tmp + dig);
}
else{
ret = tmp;
}  

dig += "0";
}  

return ret;
};  

var a = "1543843275857859592482498432243255";
var b = "1554335546546546662";  

console.log(multiply(a,b));
console.log(parseInt(a)*parseInt(b));  

})();

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索tostring
, 大数相乘
, var
, length
, ret
, tmp
, 相乘
parseInt
javascript 相乘、simd指令实现矩阵相乘、c语言实现矩阵相乘、mpi实现并行矩阵相乘、spark实现矩阵相乘,以便于您获取更多的相关知识。

时间: 2024-09-19 13:30:36

用javascript实现两个大数相乘的相关文章

深入分析C++中两个大数相乘结果不正确的问题_C 语言

在编写代码做测试时发现两个大数相乘结果不正确的问题,测试代码如下: #include "stdafx.h"#include<stdlib.h>#include<time.h>int _tmain(int argc, _TCHAR* argv[]){      time_t temp1=1345172428000000;    time_t temp2=1345172428*1000000;   ::system("pause");    re

用Javascript实现两个大数相加

(function(){ var addLarge = function(n1,n2){ var over = 0; var ret = ""; var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--)

JS实现两个大数(整数)相乘_javascript技巧

大数,即超出语言所能表示的数字最大范围的数字,此时的数字只能用字符串来表示.那么如何实现两个大数相乘呢?我用JS实现了一下,代码如下: 复制代码 代码如下: console.log(bigMut("567", "1234")); // 699678 function bigMut(big, common) { big += ""; common += ""; if (big.length < common.length)

java大数相乘,希望出界抛异常。

问题描述 如题,我自己测试的时候,如果两个int型大数相乘,结果为负,求检测溢出的方法,并掷出异常的代码 解决方案 /** * Multiply two integers, checking for overflow. * * @param x a factor * @param y a factor * @return the product <code>x*y</code> * @throws ArithmeticException if the result can not

大数相乘有关位数的计算问题

问题描述 大数相乘有关位数的计算问题 如果两个大数在十位或者以下,计算结果正确,超过十位则计算错误,有时结果还会为负,这是什么情况 解决方案 Java可使用BigInteger.BigDecimal来操作 解决方案二: 大数计算问题大数相乘问题大数相乘问题 解决方案三: 数据溢出了.比如在C语言中,int类型的数据范围时-32768到32767,如果数据是32768,比32767大1,那数值就变成-32768了. 你用的是什么数据类型?10位乘以10位,那至少是20位以上的大数,你看看你那个数据

一道c的面试题,大数相乘。

这是我亲身经历的一个面试题目,并且表现的是整个面试里面最为糟糕的环节,令我十分恼火.回来以后我在tc2.0上写它,发现依然花费了我相当多的时间用于改错和调试(从这一点来看,我面试里的表现也算正常了).尽管这个问题看起来是如此的简单.当然,这里面有我对c 和c++的生疏和不熟练也有很大关系,此外是对算法的学习和研究还没有完成,还处于一个准备阶段. 题干:输入两个较大的数,输出相乘的结果.意思也就是两个数很大,超出了int的存储范围. #include <stdio.h>#include <

JavaScript获取两个数组交集的方法

  本文实例讲述了JavaScript获取两个数组交集的方法.分享给大家供大家参考.具体如下: 这里传入的数组必须是已经排过序的 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 /* finds the intersection of * two arrays in a simple fashion. * * PARAMS * a - first array, must alre

JavaScript控制两个列表框listbox左右交换数据的方法

 这篇文章主要介绍了JavaScript控制两个列表框listbox左右交换数据的方法,实例分析了javascript操作列表框listbox的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了JavaScript控制两个列表框listbox左右交换数据的方法.分享给大家供大家参考.具体分析如下: 这个功能我们经常用到,将左边列表框的元素移动到右边,或者将右边列表框的元素移动到左边,可以一次性全部移动 代码如下: function listbox_moveacross(sour

JavaScript计算两个日期时间段内日期的方法

 这篇文章主要介绍了JavaScript计算两个日期时间段内日期的方法,涉及javascript操作时间的技巧,需要的朋友可以参考下     本文实例讲述了JavaScript计算两个日期时间段内日期的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: /************************* * 计算两个日期时间段内所有日期 * * @param value1 * 开始日期 YYYY-MM-DD * @param value2 * 结束日期 * return 日期数组