高精度问题
来源:百度知道 编辑:UC知道 时间:2024/06/02 15:40:56
有没有掌握的必要?
利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。我们可以利用程序设计的方法去实现这样的高精度计算。这里介绍常用的几种高精度计算的方法。
高精度计算中需要处理好的以下几个问题。
(1)数据的接收方法和存贮方法
数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位取出,存入数组中。另一种方法是直接用循环加数组方法输入数据。
(2)进位、借位的处理
加法进位:a[i]:=a[i]+b[i],若a[i]>10则a[i]:=a[i]-10,a[i+1]:=a[i+1]+1;
减法借位:若a[i]<b[i]则a[i+1]:=a[i+1]-1 a[i]:=a[i]+10,a[i+1]:=a[i+1]-1;
乘法进位:y:=a[i]*b[i]+c,c:=y div 10 a[i]:=y-c*10
例1:高精度加法程序
[问题分析]
(1)采用字符串输入的方法:str1,str2,用字符串截取的方法取出每一位;
(2)将每一位数分别存放到a,b两数组中;
(3)从低位到高位依次将各位数相加,对需进位的采用进位处理方法;
(4)从高位到低位输出
参考程序如下:
program lx1;
const n=100;
var str1,str2:string;
a,b:array[1..n]of integer;
k,l1,l2,l,i:integer;
begin
readln(str1);
readln(str2)