如何将浮点数截断为prolog中的N小数点n?
是否有任何内置工具?
实际上,很容易在prolog中定义谓词truncate/3
。假设我们希望将实际号码截断为X
到N
小数点位置并将其结果存储在Result
中。在此Wikipedia站点中,使用数学函数进行截断,我们可以按以下方式定义谓词:
% 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, !.
我使用剪切,因为以上两个情况是相互排斥的。