继上一篇博文写了大整数加法之后,我又模拟上篇博文的算法,自己实现了大整数减法。

大整数减法相对于加法来说,稍微复杂一点。由于要考虑一些情况:

1. 两个数相减,可能会出现结果为正、负和0三种情况;

2. 会出现借位的情况,而且还要考虑最高位时有没有借位。

实现代码如下:

function subString(a,b) {
//将字符串a和b补全成同等长度
while (a.length < b.length){
a = '0' + a;
}
while (b.length < a.length){
b = '0' + b;
}
//res保存结果,c用来标识有无借位的情况
var res='', c=0;
a = a.split('');
b = b.split('');
while (a.length) {
var num1 = ~~a.pop();
var num2 = ~~b.pop();
if (num1 >= num2){
c = num1 - num2 - c;
res = c + res;
c = false;
}else {
c = num1 + 10 - num2 - c;
res = c + res;
c = true
}
//判断最高位有无借位,若有借位,则说明结果为负数
if (a.length === 0 && c){
res = '-' + res
} }
res = res.replace(/^0+/,'');
//判断最后的结果是否为0
if (res === ''){
res = 0;
}
return res;
}

JavaScript实现大整数减法的更多相关文章

  1. Ac日记——大整数减法 openjudge 1.6 11

    11:大整数减法 总时间限制:  1000ms 内存限制:  65536kB 描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b(a > b).每个大整数不超过20 ...

  2. Javascript实现大整数加法

    记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行.哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈.今天在刷算法的时候,无意中看到了为什么 ...

  3. ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 L: 大整数减法

    http://acm.ocrosoft.com/problem.php?cid=1316&pid=11 题目描述 求两个大的正整数相减的差.   输入 共2行,第1行是被减数a,第2行是减数b ...

  4. OJ 大整数减法

    描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b(a > b).每个大整数不超过200位,不会有多余的前导零. 输出 一行,即所求的差. 样例输入 9999999 ...

  5. [大整数乘法] java代码实现

    上一篇写的“[大整数乘法]分治算法的时间复杂度研究”,这一篇是基于上一篇思想的代码实现,以下是该文章的连接: http://www.cnblogs.com/McQueen1987/p/3348426. ...

  6. 剑指offer第12题打印从1到n位数以及大整数加法乘法

       字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...

  7. [转载]JavaScript 中小数和大整数的精度丢失

    标题: JavaScript 中小数和大整数的精度丢失作者: Demon链接: http://demon.tw/copy-paste/javascript-precision.html版权: 本博客的 ...

  8. Code Kata:大整数比较大小&大整数四则运算---加减法 javascript实现

    大整数的四则运算已经是老生常谈的问题了.很多的库也已经包含了各种各样的解决方案. 作为练习,我们从最简单的加减法开始. 加减法的核心思路是用倒序数组来模拟一个大数,然后将两个大数的利用竖式进行运算. ...

  9. Code Kata:大整数四则运算—除法 javascript实现

    除法不可用手工算法来计算,其基本思想是反复做减法,看从被除数里面最多能减去多少个除数,商就是多少. 除法函数: 如果前者绝对值小于后者直接返回零 做减法时,不需要一个一个减,可以以除数*10^n为基数 ...

随机推荐

  1. 查询job的几个语句

    select * from dba_jobs ;select * from dba_scheduler_job_run_details t;    ------>这个语句通过制定job名,来查看 ...

  2. iOS url出现特殊字符处理 -- stringByAddingPercentEncodingWithAllowedCharacters

    stringByAddingPercentEscapesUsingEncoding(只对 `#%^{}[]|\"<> 加空格共14个字符编码,不包括”&?”等符号), i ...

  3. 阿里云CentOS自动备份MySql 8.0并上传至七牛云

    本文主要介绍一下阿里云CentOS7下如何对MySql 8.0数据库进行自动备份,并使用.NET Core 将备份文件上传至七牛云存储上,并对整个过程所踩的坑加以记录. 环境.工具.准备工作 服务器: ...

  4. jQuery----选择器(重点是层次选择器)

    基本选择器 1.id选择器  ---------------------------->根据id来获取,只有一个.---------------------------------------- ...

  5. php 查看使用多少内存

    方法memory_get_usage 是指当前脚本正在使用的内存 unset只是把内存标记为空闲但并没有释放,要GC程序结束后才会释放 $bytes = memory_get_peak_usage() ...

  6. Android ViewPager设置监听注意事项

    首先 implements View.OnClickListener 因为Item比较多用这个方便 设置监听要注意地方,如果在 onCreate 直接 findViewById布局里的ID是会出错的 ...

  7. Python点滴记录-day-01

    python基础 - 基础 1.第一句python - 后缀名是可以可任意? - 导入模块时,如果不是.py文件 ==>以后文件后缀名是.py 2.两种执行方式 python解释器 py文件路径 ...

  8. 目标反射回波检测算法及其FPGA实现(准备篇): 用Verilog-HDL状态机控制硬件接口

    基于FPGA的目标反射回波检测算法及其实现(准备篇) :用Verilog-HDL状态机控制硬件接口 前段时间,开发了一个简单的目标反射回波信号识别算法,我会分几篇文章分享这个基于FPGA的回波识别算法 ...

  9. 20155211 Exp1 PC平台逆向破解(5)M

    20155211 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入 ...

  10. kruskal重构树

    kruskal重构树 kruskal重构树,顾名思义,是在kruskal的时候顺便搞出来的一棵重构树,具体地说是一个堆. 先说说这个东西是怎么搞出来的吧:默认事先把边按边权从小到大排序,在kruska ...