为什么加减乘除计算不进位,加减乘除有效数字怎么确定

首页 > 实用技巧 > 作者:YD1662023-04-16 19:44:26

大数乘法

大数乘法乍一想可能比较复杂,因为乘法比起加法可能进位不光是1,还有两个数各种位置都需要相乘计算,这时候就需要我们化繁为简了。

多*多考虑起来可能有些麻烦,但是如果多*一考虑起来呢?如果是多位乘以一位数,那么就拿一位的分别乘以多位数的个位、十位、百位,在计算的同时考虑一下进位的情况。

但是也可以先直接用 int 类型数组存储各位的乘积然后从右向左进行进位,如下图所示。

为什么加减乘除计算不进位,加减乘除有效数字怎么确定(9)

而多*多 也是这个道理,将不同位乘积先叠加到对应位置上,然后从右向左进位,一直到不需要进位为止。

为什么加减乘除计算不进位,加减乘除有效数字怎么确定(10)

一个乘法流程

你可能会疑问,如果两个数组的长度分别为a和b这个数组到底该开多大呢?

这题有力扣对应题可以去试试【43字符串相乘】,具体代码为:

public String multiply(String num1, String num2) {
if("0".equals(num1)||"0".equals(num2))return "0";
char a=num1.toCharArray;
char b=num2.toCharArray;

int value=new int[a.length b.length];

for(int i=a.length-1;i>=0;i--)
{
for(int j=b.length-1;j>=0;j--)
{
int index=a.length-1-i b.length-1-j;
value[index] =(a[i]-'0')*(b[j]-'0');
}
}
for(int i=0;i<value.length-1;i )
{
value[i 1] =value[i]/10;
value[i]=value[i];
}
int index=value.length-1;
while(value[index]==0)
{index--;}
StringBuilder sBuilder=new StringBuilder;
while (index>=0) {
sBuilder.append(value[index--]);
}
return sBuilder.toString;
}

为什么加减乘除计算不进位,加减乘除有效数字怎么确定(11)

大数除法

大数加减乘都搞定了,通过模拟来实现,但是大数除法也通过模拟来实现?

并不是,对于大数a/b,一般最多要求求到其整数解或者余数,即a/b=c……d(a,b,c,d均为整);也就是a里面有c个b,并且还剩下d。核心是先求c是多少,对于程序来说,可以通过枚举啊,将除法变成减法,从a中不断减d,一直到不能减为止。

为什么加减乘除计算不进位,加减乘除有效数字怎么确定(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.