1

如何在Prolog中将浮点数截断到小数点后N位?

有没有内置的工具呢?

4

1 回答 1

2

truncate/3实际上,在 Prolog中定义谓词很容易。假设我们想要将一个实数截断XN小数位并将其结果存储在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 是因为上述两种情况是互斥的。

于 2018-04-26T10:15:05.020 回答