跳到主要内容
CalcMax

减法计算器

范围:0 – 1,000,000,000,000

范围:0 – 1,000,000,000,000

结果

667

差

借位
1, 1, 1, 0

竖式减法计算器把两个整数按数位对齐相减,一位一位地算,并把每一步往左边借的那一位印出来。它是有过程的那种减法:给出的除了差,还有每一位上写下来的数字,以及一条一位一项的借位链。默认的算式是 1234 减去 567 得 667,凡是上面那一位不够减下面那一位的列都要借一次。这一页只收整数——小数要先按小数点对齐再补零,那是另一段写法;被减数小于减数时也照收,中间过程仍然按「大数减小数」走,变的只是差的符号。

1234 − 567 逐列的推导

列这一列的数字借进来的数原始差写下的数字借出去的数
04 - 70-371
13 - 61-461
22 - 51-461
31 - 01000

一列一行,从个位往上读,也就是实际算的方向。「这一列的数字」印的是实际相减的那一对:中间过程永远走「大数减小数」,所以 3 − 5 在这一格里出现的是 5 − 3。原始差是这一列自己减出来的结果、还没算上从左边借来的十,所以它可以为负;原始差为负就借 1,写下的数字是它加上十之后的值。最上面一行的「借进来的数」是 0,因为个位右边没有东西;最下面一行的「借出去的数」是 0,因为左边没有东西了。列号都是整数,数字那一串是记号,所以这张表在全部十个语言里长得一样。

公式

第 k 列:原始差 = 被减数的第 k 位 − 上一位借走的 1 − 减数的第 k 位 不够减(原始差小于 0)就往高位借 1,写下的数字 = 原始差 + 10 够减就不借,写下的数字就是原始差

被减数
被减数:被减掉的那一个数,是不超过一万亿的整数。它写在竖式上面那一行,每一列都拿它的数字来减——包括它已经没有数字的那些高位,那里按 0 算。
减数
减数:减掉的那一个数,写在下面,个位对齐。它允许比被减数大,那时中间过程按反过来的那一边算,只在差的前面加一个负号。
第 k 列
从右往左数第 k 位,个位算第零列。一列必须在它右边那一列定下来之后才能算,因为借位是往左走的——这也是「从个位开始」的由来。
借位(退位)
上面那一位不够减下面那一位时,从左边那一列拿过来的 1。它到了这一列就值十,所以 4 − 7 变成 14 − 7,而被拿走的那一列少掉 1。教材里这一步也叫退位、退一。
差
算出来的结果,同时也是借位链的对照物:链上一位对应大数的一列,所以最后一项恒为 0。前导的零一律不写,099 就是 99。

需要把减法讲出来、而不只是要一个答案时用这一页:讲「哪一位不够减、要退位」这一步,或者核对一个手算出来的差。这一页还给出了配套的验算:把差加回减数,看是否回到被减数——加得回来,减法就没错。

算例

  1. 1234 − 567

    1. 个位:4 − 7 不够减,向十位借 1 当十,读作 14 − 7 = 7
    2. 十位:3 已经被上面那次借走 1,剩下 2,2 − 6 还是不够,再借一次读作 12 − 6 = 6
    3. 百位:2 同样被借走 1,1 − 5 不够,借了读作 11 − 5 = 6
    4. 千位:1 被借走 1 剩 0,0 − 0 = 0
    5. 从高位往低位数下来,写下的数字是 0、6、6、7
    6. 差是 667,借位链是 1, 1, 1, 0

    默认算例,也是「为什么要把过程写下来」最直白的一格:每一列借走 1,上面那一列就少 1,所以轮到它的时候它的数字已经变了。最后一项是 0,因为最高位上面没有东西可借——那个 0 是借位到此为止,不是漏了一步。

  2. 1000 − 1:连续退位

    1. 个位:0 − 1 不够减,向十位借
    2. 十位是 0,没有东西可借,它得先向百位借
    3. 百位也是 0,于是向千位借:千位的 1 变成 0,百位拿到十
    4. 百位留一个十给自己,剩下的借给十位;十位再留一个十,剩下的借给个位
    5. 个位:10 − 1 = 9;十位:9 − 0 = 9;百位:9 − 0 = 9
    6. 差是 999,借位链是 1, 1, 1, 0

    借位链与上一个算例一模一样,四项——这正是这一格要说的:借位会横穿整个数的宽度,而结果是各位的补九。中间那一列是 0 不等于「没有可借的」:0 自己也得先向左边借,纸上就是老师写在算式上方那串划掉的数。

  3. 3 − 5:差变成负数

    1. 上面那个数比下面那个小,于是反过来算:5 − 3
    2. 个位:5 − 3 = 2,一次都不用借
    3. 写下的数字就是 2
    4. 因为两个数换过位置,答案前面加一个负号
    5. 差是 −2,借位链是 0

    中间过程永远是「大数减小数」,所以参考表里那一列永远不会出现负数行,负号只出现在差上面。借位链能读也是因为这个:链的项数由大数的位数决定,如果允许按输入的顺序排,长度就不固定了。

局限

只收整数。小数也能竖式相减,但要先按小数点对齐、再用零补到一样长,而那会改变「一列」的含义——所以小数在这里被拒收,而不是被当成整数悄悄算下去。负数同样拒收:正负号不是数字,它需要自己的一列和自己的一条规则。一次只收两个数,连减(100 − 20 − 5)是连着做两次减法。每个数不超过一万亿,因为数字是一位一位取出来的,越过去之后写下来的数字就对不上答案了。被减数小于减数时差是负数,但过程里印的是「大数减小数」的那一份,所以参考表不能照着输入的顺序读。

常见问题

竖式减法是什么?
按照数写下来的样子来减:把相同数位对齐,从个位往左一列一列地算,上面那一位不够减下面那一位时,就向左边借十过来。算出来的差与计算器给的是同一个,区别在于中间那几步是留下的。
退位和借位是一回事吗?
是一回事,只是叫法不同:退位、借位、退一,说的都是同一个动作——从左边那一列拿 1 过来,到这一列当十用。教材里两种说法都有,所以这一页两个词都印出来。
借位链最后为什么一定是 0?
因为最高的一位不用借。只有上面那一位不够减下面那一位时才借,而大数的最高位一定比减数的全部还大,所以到那里就停住了。最后那个 0 就是这个「停住」,链的项数因此比实际看到的借位次数多一项。
怎么验算减法?
把差加回减数,看是不是回到被减数。1234 − 567 = 667,而 667 + 567 = 1234,这一步加法就是验算。加得回来就说明减法没错,所以教材把加减法放在一起教。
小数能算吗?
这一页不行。小数也能竖式相减,但要先按小数点对齐、再用零补到一样长,而那会改变「一列」的含义——从数位变成小数点后的第几位。这一页会拒收这种输入,而不是把 1.5 当成 15 去减。
大数减小数与小数减大数,过程一样吗?
过程一样,差差一个符号。3 − 5 是按 5 − 3 = 2 算的,最后写成 −2。中间过程一律走「大数减小数」,否则借位链的长度就不固定了,而这一页的整张参考表都是围着那条链建的。

参考资料

相关计算器