我发现结果很奇怪。为什么不是0.3?有人可以告诉我为什么会有这种结果吗?有没有可能解决这个问题。swi-prolog的奇怪算术
?- X is 5.3-5.
X = 0.2999999999999998.
?-
我的第二个问题是,我将如何从'小时'符号'13 .45' - >'15.30'转换为小时数?例如,上述计算的15.30-13.45时期为1.85。但我需要在部分时间进行操作,而不是数字的剩余部分。就像15 1/2 - 13/4一样,这种方式更好。我试试
?- X is (5.3-5)*100/60.
X = 0.4999999999999997.
?- X is (5.3-5)*100//60.
ERROR: ///2: Type error: `integer' expected, found `29.999999999999982'
有什么建议吗?
最近在SWI-Prolog邮件列表中发现了一些非常类似的东西(https://lists.iai.uni-bonn.de/pipermail/swi-prolog/2014/012496.html),其中问题转向因为Pascal正在使用大量的编译器魔术来掩盖浮点数的复杂性,当Prolog不以相同的方式工作时会造成混淆。 “总是不完美”的 –