输入分子和分母,打印出前1000位小数

program oneThousandNumberic;

var
son,mom,divNum,modNum,i:integer;

begin
writeln('pls input son:');
readln(son);
writeln('pls input mom:');
readln(mom);

i:=1;
divNum:=son;

while i<=1001 do
begin
    write(divNum div mom);
    if i=1
    then write('.');
    modNum:=divNum mod mom;
    divNum:=modNum*10;
    i:=i+1;
end;
end.
题目:输入分子和分母,打印出他的1000位小数。

这道题就是拆分每次的动作。
2 div 7 = 0
2 mod 7 = 2 <-- next div source
print .
2*10 div 7 = 2
2*10 mod 7 = 6 <--
6*10 div 7 = 8
6*10 mod 7 = 4 <--
4*10 div 7 = 5
4*10 mod 7 = 5 <--
5*10 div 7 = 7
5*10 mod 7 = 1 <--
1*10 div 7 = 1
1*10 mod 7 = 3 <--

print result:
0.28571

用每次的除数 去除 分母,商就是当位的值
然后余数就是作为下一位除法的源头,也就是余数*10.

只用打印每次的商,就是小数位了 

这道题给我的感觉就是,计算过程很质朴,思路很简单。

就是简单的把人做除法的步骤准确化,使得计算机可以按步骤执行。

然后利用计算机算东西很快的能力,算出结果。

原文地址:https://www.cnblogs.com/lsjava/p/15369541.html