高精度除法运算的实现

Author: 蒲小勤 Date: 1994-03-18

        笔者设计了一种算法,可以实现除法的高精度运算,理论上可精确到小数点后无限位。该算法突破了计算机中除法运算的一般概念,不是向计算机直接输入运算式,由计算机运算后得到结果,而是利用了计算机运算速度快的特点,用计算机模仿除法运算的实际步骤,先用被除数除以除数,得到一个整数商和一个余数,将整数商记录下来作为结果,将余数乘以10后作为下一步运算的被除数,继续运算,并往复循环。
        将每一步运算得到的整数商转换成字符串存储在字符串变量中,当运算到用户给定的精度时,输出字符串变量的内容即为运算结果。
        本文所附程序用高级BASIC语言写成,在Super PC/286微机上运行通过。
        
        5 CLS
        10 PRINT "A/B=?"
        20 INPUT "input A="; a
        30 INPUT "input B="; b
        35 INPUT "stop at :"; n
        40 IF b = 0 THEN PRINT "error: divided by zero!": BEEP: GOTO 10
        50 aa = a
        55 s = INT(aa / b)
        60 first$ = STR$(s)
        70 FOR i = 1 TO n
        80 aa = (aa - b * s) * 10
        90 s = INT(aa / b)
        100 rst$ = rst$ + STR$(s)
        110 NEXT i
        120 PRINT STR$(a); "/"; STR$(b); "="; first$; "."; rst$
        130 END