Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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”