float_num(+Dividend, +Divisor, +Digit, -Num)
传回Dividend除以Divisor的第Digit位小数Num。
例:
?- float_num(1,7,1000009,Num).
传回 Num = 1.
?- float_num(1,7,1000010,Num).
传回 Num = 4.
?- float_num(1,7,1000011,Num).
传回 Num = 2.
?- float_num(1,7,1000012,Num).
传回 Num = 8.
?- float_num(1,7,1000013,Num).
传回 Num = 5.
?- float_num(1,7,1000014,Num).
传回 Num = 7.
?- float_num(4,5,10,Num).
传回 Num = 0.
传回Dividend除以Divisor的第Digit位小数Num。
- 代码:
float_num(Dividend,Divisor,Digit,Num) :- X is Dividend mod Divisor, loop(X,Divisor,Digit,Num).
loop(Dividend,Divisor,Digit,Num) :- next_number(Dividend,Divisor,N,R), C is Digit -1, (C = 0 -> Num = N ; loop(R,Divisor,C,Num)) .
next_number(N1,N2,Num,Remain) :-
N3 is N1 * 10, (N3 =< N2 -> Num =0, Remain = N3 ; Num is floor(N3/N2), Remain is N3 - Num * N2).
例:
?- float_num(1,7,1000009,Num).
传回 Num = 1.
?- float_num(1,7,1000010,Num).
传回 Num = 4.
?- float_num(1,7,1000011,Num).
传回 Num = 2.
?- float_num(1,7,1000012,Num).
传回 Num = 8.
?- float_num(1,7,1000013,Num).
传回 Num = 5.
?- float_num(1,7,1000014,Num).
传回 Num = 7.
?- float_num(4,5,10,Num).
传回 Num = 0.