javascript乘法和加法_js 大整数加法、乘法、除法

有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作。接下来我将演示大整数的加法、乘法、除法操作。

附:不考虑负数

1、大整数加法

思路:我们将两个数进行逆序转换,然后按位进行相加,将相加的结果进行与10相除,商为进位,余数为当前位要保留的数。

//大整数加法

function big_add(a,b){

var min_str=a.length

var max_str=a.length>=b.length?a.split("").reverse():b.split("").reverse();

var quotient=0,remainder=0;

var resutl=[];

var temp=0;

for(var i=0;i

temp=parseInt(min_str[i])+parseInt(max_str[i])+quotient;

quotient=parseInt(temp/10);//进位

remainder=temp%10;//余数

resutl.push(remainder);

}

for(i;i

temp=parseInt(max_str[i])+quotient;

quotient=temp/10;//进位

remainder=temp%10;//余数

resutl.push(remainder);

if(temp<10&&i

return max_str.slice(i+1).reverse().join("")+resutl.slice().reverse().join("");

}

}

return resutl.reverse().join("");

}

2、大整数乘法

//大数乘法

function multi(a,b){

var str1,str2,len1,len2,maxlen,result = [];

str1 = a.split("").reverse();

str2 = b.split("").reverse();

len1 = str1.length;

len2 = str2.length;

//因为要在下一步做累加,如果不初始化为0,result[]中的值会变为NaN

//因为未初始化的数组中的值为undefined

for(var i = 0;i < len1;i++)

for(var j = 0;j < len2;j++)

result[i + j] = 0;

for(var i = 0;i < len1;i++)

for(var j = 0;j < len2;j++)

//根据乘法的手动计算方式,在上下相同位上会有相加

result[i + j] += parseInt(str1[i]) * parseInt(str2[j]);

var n = result.length;

for(var k = 0;k < n-1;k++)

{

var temp = result[k];

if(temp >= 10)

{

result[k] = temp % 10;

//JS中的"/"不是除法取整,会取得小数,所以要用Math.floor()

result[k + 1] += parseInt(temp / 10);

}

}

return result.reverse().join("");

}

3、大整数除法

//利用"模n取余法"模拟手动除法

//a/b a>b

function big_div(a,b){

var alen=a.length,blen=b.length;

var quotient=0,remainder=0;

var result=[],temp=0 ;

for(var i=0;i

temp=remainder*10+parseInt(a[i]);

if(temp

remainder=temp;

result.push(0);

}else{

quotient=parseInt(temp/b);

remainder=temp%b;

result.push(quotient);

}

}

return [result.join("").replace(/\b(0+)/gi,""),remainder];//结果返回[商,余数]

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1376):app.use方法

const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数 app.use(fn({ a: 1 }));function fn(obj) {return function(req, res, next) {if (obj.a 1) {console.log…

c treelist绑定mysql_TreeList 绑数据

try{RestService service new RestService();List categories service.SelectGoodsCategory(this.Login.Storeguid);if (categories ! null){TreeNode root new TreeNode(this.Login.StoreName);foreach (UMS_BASE_出品类别表 item in categories){if (categories.Contains(…

websocket + node.js聊天系统

转&#xff1a;http://www.cnblogs.com/Wayou/p/hichat_built_with_nodejs_socket.html 前端一直是一块充满惊喜的土地&#xff0c;不仅是那些富有创造性的页面&#xff0c;还有那些惊赞的效果及不断推出的新技术。像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端。…

前端学习(1377):express路由参数

const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数app.get(/index/:id, (req, res) > {res.send(req.params); }) app.listen(3000); console.log(服务器启…

java桥_java 泛型--桥方法

因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法.本文最后附录所有源码.Pair 是个泛型类, 它具有泛型方法 setSecond(T second),在经过编译时的 类型擦除 后变为 setSec…

前端学习(1378):express静态资源处理

const express require(express); const pathrequire(path); const app express();app.use(express.static(path.join(__dirname))) app.listen(3000); console.log(服务器启动成功);

json字符串生成C#实体类的工具

转载&#xff1a;http://www.cnblogs.com/finesite/archive/2011/07/31/2122984.html json作为互联网上轻量便捷的数据传输格式,越来越受到重视。但在服务器端编程过程中&#xff0c;我们常常希望能通过智能提示来提高编码效率。JSON C# Class Generator 能将json格式所表示的J…

java 栈 泛型_java 泛型栈(数组实现) | 学步园

尝试将一些数据结构用java实现&#xff0c;尝试过程中确实碰到一些问题&#xff0c;收获很大import java.lang.reflect.Array;class ArrayStack {Class type;private T[] values;private int maxSize;private int top;public ArrayStack(Class type, int maxSize) {this.type …

移动web资源整理

2013年底接触移动端&#xff0c;简单做下总结&#xff0c;首先了解下移动web带来的问题 设备更新换代快——低端机遗留下问题、高端机带来新挑战浏览器厂商不统一——兼容问题多网络更复杂——弱网络&#xff0c;页面打开慢低端机性能差——页面操作卡顿HTML5新技术多——学习成…

《Python核心编程》笔记 Python对象

1、Python对象 Python使用对象模型来存储数据&#xff0c;构造任何类型的值都是一个对象。所有的对象都有三个特性&#xff1a; 身份&#xff0c;可通过内建函数id()查看&#xff0c;这个值即该对象的内存地址。类型&#xff0c;可通过内建函数type()查看。值&#xff0c;对象表…

前端学习(1382):多人管理项目2案例初始化

blog.js const express require(express);const app express();const home require(./homegeyao); const admin require(./admingeyao);app.use(/home, home); app.use(/admin, admin); app.listen(3000);console.log(服务器启动成功); admingeyao.js //管理页面 //展示…

codeforces C. Xor-tree

http://codeforces.com/problemset/problem/430/C 题意&#xff1a;在一棵上有n个节点&#xff0c;有n-1条边&#xff0c;在每一个节点上有一个值0或1&#xff0c;然后给你一个目标树&#xff0c;让你选择节点&#xff0c;然后把节点的值翻转&#xff0c;它的孙子节点跟着翻转&…

java jsp ajax_ajax的json传值方式在jsp页面中的应用

jsp页面&#xff1a;$(document).ready(function() {setInterval(function myTimer(){//alert(a);getViews();},1000);});//播放function getViews(){$.ajax({url:"${pageContext.request.contextPath}/video/getVideos.action?r"Math.random()"&open1&quo…

前端学习(1383):多人管理项目3

blog.js const express require(express); //创建网站服务器 const app express(); //开放静态资源文件 const path require(path);//告诉express框架模板所在的位置 app.set(views, path.join(__dirname, views)); //告诉express框架模板的后缀是什么 app.set(view engine…

梁世豪的读书计划

在软工王老师的建议下&#xff0c;我在本学期要认真阅读《梦断代码》 &#xff0c;《你的灯亮着吗》和《大道至简》这三本可以让我受益匪浅的经典图书。 我的大三下学期软件工程课下相关图书阅读计划: 清明假前的这一个月期间内读完必读书目《梦断代码》。 劳动节前的一个月内看…

java 运算优先级_Java-运算符优先级

我们先后学习了不同的运算符&#xff0c;通过运算符我们的能进行各种不同的操作实现自己的想要的效果&#xff0c;但是此时还存在一个问题&#xff0c;当在一个表达式中&#xff0c;有可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象。由于表达式有多种运算&a…

前端学习(1384):多人管理项目4资源的路径

blog.js const express require(express); //创建网站服务器 const app express(); //开放静态资源文件 const path require(path);//告诉express框架模板所在的位置 app.set(views, path.join(__dirname, views)); //告诉express框架模板的后缀是什么 app.set(view engine…

mysql中新建不了查询语句_将excel和mysql建立链接后,如何通过在excel里面执行mysql查询语句,然后建立查询...

启动excel,点击data选项卡&#xff0c;在这个选项卡下选择new query&#xff0c;from other sources&#xff0c;form odbc然后点击advanced options选项&#xff0c;填入如下查询语句select * from test1.biao1;解释一下&#xff1a;test1是我的mysql一个数据库的名字&#xf…

前端学习(1385):多人管理项目5抽离

blog.js const express require(express); //创建网站服务器 const app express(); //开放静态资源文件 const path require(path);//告诉express框架模板所在的位置 app.set(views, path.join(__dirname, views)); //告诉express框架模板的后缀是什么 app.set(view engine…