MySQL 9.0 发行说明
MySQL 提供了对精度数学的支持:数值处理,可生成极其准确的结果,并对无效值进行高度控制。精度数学基于以下两个功能:
控制服务器在接受或拒绝无效数据时的严格程度的 SQL 模式。
用于定点算术的 MySQL 库。
这些功能对数值运算有几个影响,并提供了高度符合标准 SQL 的能力。
精确计算:对于精确值数字,计算不会引入浮点误差。相反,使用精确精度。例如,MySQL 将
.0001
这样的数字视为精确值,而不是近似值,将其累加 10,000 次,结果正好为1
,而不是仅仅“接近”1 的值。定义明确的舍入行为:对于精确值数字,
ROUND()
的结果取决于其参数,而不是环境因素,例如底层 C 库的工作方式。平台无关性:对精确数值的运算在不同的平台(如 Windows 和 Unix)上是相同的。
控制对无效值的处理:溢出和除以零是可以检测到的,可以作为错误处理。例如,您可以将超出列范围的值视为错误,而不是将其截断到列数据类型的范围内。类似地,您可以将除以零视为错误,而不是作为生成
NULL
结果的运算。采用哪种方法取决于服务器 SQL 模式的设置。
以下讨论涵盖了精度数学工作原理的几个方面,包括与旧应用程序可能存在的兼容性问题。最后,给出了一些示例,演示了 MySQL 如何精确地处理数值运算。有关控制 SQL 模式的信息,请参见 第 7.1.11 节,“服务器 SQL 模式”。