MySQL 8.4 Release Notes
14.24 精确数学
MySQL 提供了精确数学支持:数值处理结果非常准确,并且可以控制无效值的处理。精确数学基于以下两个特性:
-
SQL 模式控制服务器对无效数据的接受或拒绝。
-
MySQL 库固定点算术库。
这些特性对数值操作产生了几个影响,并提供了标准 SQL 的高程度遵循:
-
精确计算:对于exact-value 数字,计算不引入浮点错误。相反,精确的精度被使用。例如,MySQL 将一个数字,如
.0001
视为exact值,而不是近似值,并将其相加10,000次产生的结果是exact的1
,而不是一个近似值““close””。 -
良好定义的舍入行为:对于exact-value 数字,
ROUND()
的结果取决于其参数,而不是环境因素,如底层C库的工作方式。 -
平台独立性:对exact 数字的操作在不同的平台,如Windows和Unix上是一致的。
-
控制无效值的处理:溢出和除以零是可检测的,可以被视为错误。例如,您可以将一个值视为错误,而不是将其截断到列的数据类型范围内。类似地,您可以将除以零视为错误,而不是将其结果设置为
NULL
。选择哪种方法取决于服务器SQL模式的设置。
以下讨论了精确数学的工作原理,包括可能与旧应用程序不兼容的部分。最后,提供了一些示例,展示了MySQL如何精确地处理数值操作。关于控制SQL模式的信息,请参阅Section 7.1.11, “Server SQL Modes”。