在 prolog 中截断一个浮点数
Truncate a floating point number in prolog
如何在Prolog中将浮点数截断到小数点后N位?
有内置工具吗?
其实在Prolog中定义谓词truncate/3
很容易。假设我们要将实数 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是因为上面两种情况互斥
如何在Prolog中将浮点数截断到小数点后N位?
有内置工具吗?
其实在Prolog中定义谓词truncate/3
很容易。假设我们要将实数 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是因为上面两种情况互斥