一、课程目标
1.高精度计算背景
2.高精度计算原型模拟
3.掌握高精度基础计算
二、目标详解
1. 高精度计算背景
计算机的基础数据类型都有长度限制,在C++中,以整数为例,最大长度是long long即8个Byte,64位,转成整数范围是[-2^63,2^63)。如果数字超过这个范围,就会因为数字的溢出,无法输出你想要的结果。这时需要抛弃简单的基础数据类型的运算,需要使用高精度计算。
2. 高精度计算原型模拟
在小学数学里,我们还记得“竖式”运算,比如两个数相加,4236+6745,竖式是这样的
千位 | 百位 | 十位 | 个位 | ||
---|---|---|---|---|---|
4 | 2 | 3 | 6 | ||
+ | 6 | 7 | 4 | 5 | |
未进位 | 10 | 9 | 7 | 11 | |
进位后 | 1 | 0 | 9 | 8 | 1 |
在这个竖式运算过程中有几个关键的模拟,这里先做个描述
首先,我们使用数组来模拟我们要进行操作的数,数组1对应个位数,2对应到十位数,依次往数组高位扩展,比如上面的两个数a={0,6,3,2,4},b={0,5,4,7,6},数组的0位我们预留放数组的实际长度。
然后,在运算的过程中,如果有必要,我们可以再模拟一个数组来存进位,再模拟一个数组来存输出结果。
最后,我们根据进位、借位调整输出结果的数据长度并输出结果。
3.掌握高精度基础计算
- 高精度加法
- 高精度减法
- 高精度剩法
- 高精度除法
- 高精度阶剩