切换到宽版
  • 6300阅读
  • 1回复

求高精度减法!急! [复制链接]

上一主题 下一主题
离线wbkr
 
只看楼主 倒序阅读 0 发表于: 2005-11-16
谁能贡献一个高精度减法的程序,要简单,易懂,我水平不高!
离线alpha_zhang
只看该作者 1 发表于: 2005-11-16
procedure substract(a,b:hp;var c:hp); {a,b,c为字符串,a,b中的字符是数字倒过来排的;如123则存入为'321'}
var i,len:integer;
begin
  fillchar(c,sizeof(c),0);{把a,b字符串中数想减,并存入C中,这时是把C全置0}
  if a[0]>b[0] then len:=a[0] else len:=b[0];{len大小为字符串中,a 或b 中较长的,即数较大的长度}
  for i:=1 to len do begin
    inc(c,a-b);{第i位相减,存入c,后面的就是在i位置时a小于b时向后一位借一.}
    if c<0 then begin inc(c,10);dec(c[i+1]); end;
    while (len>1) and (c[len]=0) do dec(len);{当len>1即长的那一位还有数位,c[len]=0即c[len]处还未得数}
  c[0]:=len;{最后所得数的长度c[0]}
end;
快速回复
限100 字节
 
上一个 下一个