如何在Prolog中将浮点数截断到小数点后N位?
有没有内置的工具呢?
truncate/3
实际上,在 Prolog中定义谓词很容易。假设我们想要将一个实数截断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, !.
我使用 cut 是因为上述两种情况是互斥的。