主要思路:高精度数字用数组存储,低位数字存在数组的低位,然后依次按位计算
加法思路:考虑进位
减法思路:考虑减数和被减数的大小,适当调换参数位置,借位。
乘法思路:被乘数的每一位乘以乘数
除法思路:被除数的每一位除以除数
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
import java.lang.Math;
public class App {
// 高精度除法
public ArrayList<Integer> div(ArrayList<Integer> a,int b){
ArrayList<Integer> c = new ArrayList<>();
int t = 0;//余数
// 判断特殊情况
if(b == 0)
{
c.add(0);
return c;
}
//这里是一个高精度数除以一个低精度数,低精度数直接用int表示,
// 计算规则是高精度的每一位数除以b的结果作为该位置上的结果,模b的结果*10与下一位相加
//注意这里遍历的顺序与以往相反
for(int i = 0;i < a.size();i++){
t = t*10+a.get(i);
c.add(t/b);
t = t%b;
}
// 用于去除前位多余的0
int flag = 0;
for(int i = 0;i < c.size();i++)
{
if(flag == 0)
if(c.get(i) != 0)
flag = 1;
if(flag == 1 || i == c.size