代码之家  ›  专栏  ›  技术社区  ›  Deeps

在prolog中截断浮点数

  •  1
  • Deeps  · 技术社区  · 6 年前

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

    是否有用于此的内置工具?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Iqazra    6 年前

    实际上,定义谓词很容易 truncate/3 在Prolog中。假设我们要截断一个实数 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是因为上述两种情况是相互排斥的。

    推荐文章