在prolog中截断浮点数

时间:2018-04-25 23:28:54

标签: prolog yap

如何在Prolog中截断最多N个小数位的浮点数?

是否有内置工具?

1 个答案:

答案 0 :(得分:0)

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