【发布时间】:2026-01-03 16:30:02
【问题描述】:
我在知识库中有这行:
height(Hipot,Y) :- Y is sin(pi/6)*Hipot.
它计算一个直角三角形的cathetus。
当向 Prolog 询问 Y 的值时,我得到一个不准确的数字:
?- height(1,Y).
Y = 0.49999999999999994.
但实际值是 1/2,所以它应该输出 0.5。我猜这个不准确是因为使用了pi,但我想继续使用它,所以如何将Y 舍入到0.5?
【问题讨论】:
-
@DanielLyons 我知道浮点数在编程中被“破坏”了,我只是想知道如何在 Prolog 中解决这个问题。
-
我认为您在下面对@mat 的评论中忽略了这一点,因为您无法真正控制 Prolog 如何打印内部值。在 Python 和其他所有语言中也会发生同样的事情。您唯一可以控制的时间是当您专门将浮点数转换为字符串以进行输出(或将其传递给一些将格式化它的输出例程。)
标签: floating-point prolog prolog-toplevel