我需要编写一个带有浮点数的谓词,并返回一个列表的数字。例如:
?- solA(0.1234, [], B).
B = [1,2,3,4]
这是我的代码:
addhead(X, L, [X|L]).
solA(0.0, _, _).
solA(A, B, H) :-
C is A*10,
D is float_integer_part(C),
E is round(D),
F is C-E,
addhead(E, B, G),
solA(F, G, H).
答案 0 :(得分:2)
这就是我解决问题的方法:
digits_of( Number , Digits ) :-
number_codes( Number , Codes ) ,
findall( Digit , ( member(Code,Codes) , digit(Code,Digit) ) ,Digits )
.
digit(Code,Digit) :-
code_type(Code,digit) ,
Digit is Code - 48 , % 48 is code point for ASCII/Unicode zero ('0')
.
因为处理浮点抖动让我很头疼。