如何在Prolog中截断最多N个小数位的浮点数?
是否有内置工具?
答案 0 :(得分:0)
实际上,在Prolog中定义谓词truncate/3
很容易。假设我们想要截断一个实数X
到N
个小数位,并将其结果存储在Result
中。在this Wikipedia site中使用数学函数进行截断,我们可以按如下方式定义谓词:
% truncation for positive numbers
truncate(X,N,Result):- X >= 0, Result is floor(10^N*X)/10^N, !.
% truncation for negative numbers
truncate(X,N,Result):- X <0, Result is ceil(10^N*X)/10^N, !.
我使用cut,因为上述两种情况是互斥的。