首页 理论教育 高精度数值处理介绍-C++语言中学版

高精度数值处理介绍-C++语言中学版

时间:2023-08-13 理论教育 版权反馈
【摘要】:如果采用实数型,则能保存最大的double只能提供15~16位的有效数字,即只能精确表达数百万亿的数。

高精度数值处理介绍-C++语言中学版

由于计算机运算是有模运算,数据范围的表示有一定限制,如整型int(C++中int与long相同)表达范围是(-231~231-1),unsigned long(无符号整数)范围是(0~232-1),最大值都为几十亿。如果采用实数型,则能保存最大的double只能提供15~16位的有效数字,即只能精确表达数百万亿的数。因此,在计算位数超过十几位的数时,不能采用现有类型,只能自己编程计算。

高精度计算时一般用一个数组来存储一个数,数组的一个元素对应于数的一位,表示时,由于数计算时可能要进位,为了方便,将数由低位到高位依次存在数组下标对应由低到高的位置上。另外,在申请数组大小时,一般只考虑了最大的情况,在很多情况下,表示有富余,即高位有很多0,可能造成无效的运算和判断,因此,一般将数组的第0个下标对应位置来存储该数的位数。如:3485(三千四百八十五)表达在数组a[10]上情况是:

说明:位数  个位 十位 百位 千位

在计算加减乘除时,采用列竖式方法。

注意:高精度计算时一般用正数,对于负数,通过处理符号位来修正。(www.xing528.com)

1.以字符串输入

2.直接读入

3.直接初始化(用a[]存储)

以下程序都只写函数,不写完整程序,所有高精度数存储都满足上述约定。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈