最近突然想起以前刷题遇到了高精度的练习,觉得很有必要总结一下,于是重新将加减乘除写了一遍,高精度因为位数的限制,输入必须用字符数组,中间进行转换,具体的加减乘除直接上代码。
减法:先比较俩个数组的大小,数组大的减小的就不需要操作,小的减大的变为大的减小的,同时在角标为0处赋值为-1;
加法:对应位置的数相加,超过10就向前进一位;
乘法:对于数组b的每一个数进行单独相乘,用temp进行存储,然后将temp加入到sum数组中。
除法:从起始位置进行比较,大于被除数就直接减去被除数,小于被除数就向后移动一位,再进行比较。
#include<iostream> #include<cstring> #define MAX 501 using namespace std; int num1[MAX]; int num2[MAX]; int temp[MAX * 2-1]; int SUM[MAX * 2-1]; char ch1[MAX]; char ch2[MAX]; int getFirst(int a[]); int min(int a, int b) { return a > b ? b : a; } void add(int a[], int b[], int c[], int all_num); int comp(int a[], int b[]); void sub(int a[], int b[], int c[]); void sub_d(int a[], int b[], int c[]); void multip(int a[], int b[], int c[]); void division(int a[], int b[], int c[]); int comp2(int a[], int start_a, int b[], int start_b); int main(){ cin >> ch1; cin >> ch2; int ch1_num = 0; int ch2_num = 0; while (ch1[ch1_num] != '