首页 > 解决方案 > MiniZinc 中的最小和最大浮点值

问题描述

来自 MiniZinc规范

浮点数代表实数。浮点表示是实现定义的。这意味着浮点数的可表示范围和精度是实现定义的。然而,一个实现应该在运行时中止异常浮点操作(例如,如果使用 IEEE754 浮点,则产生 NaN 的那些)。

Float 表示是实现定义的,这意味着什么?这是否取决于将使用的求解器?

mzn2fzn工具如何处理浮点表示?它的界限是什么?

标签: floating-pointminizincmzn2fzn

解决方案


MiniZinc 试图遵守 IEEE 标准。据我所知,编译器本身(minizinc驱动程序或其哥哥)遵守这个标准。mzn2fzn在内部,编译器对其浮点值使用 64 位精度。如果编译器有任何不符合这些标准的问题,我鼓励您报告它们。

求解器的标准是另一回事。MiniZinc 仅对求解器强制执行最低限度的控制。如果您想确保他们采用正确的标准,您必须与求解器的制造商进行验证。这就是为什么规范说它是实现定义的,因为求解器可能使用 32 位,如 Gecode,64 位,就像大多数求解器一样,或完全不同的技术,如区间库。


推荐阅读