文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (美国信纸) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  函数和运算符  /  高精度数学

14.24 高精度数学

MySQL 提供对高精度数学的支持:数值处理,可以产生极其精确的结果,并对无效值进行高度控制。高精度数学基于以下两个特性

  • 控制服务器在接受或拒绝无效数据方面的严格程度的 SQL 模式。

  • MySQL 用于定点算术的库。

这些特性对数值运算有几个影响,并提供了高度符合标准 SQL 的程度

  • 精确计算: 对于精确值数字,计算不会引入浮点错误。相反,使用精确精度。例如,MySQL 将诸如 .0001 这样的数字视为精确值,而不是近似值,将它累加 10,000 次会产生结果恰好为 1,而不是仅 接近 1 的值。

  • 定义明确的舍入行为: 对于精确值数字,ROUND() 的结果取决于其参数,而不是诸如底层 C 库如何工作等环境因素。

  • 平台独立性: 对精确数值的运算在不同的平台(如 Windows 和 Unix)上是相同的。

  • 控制对无效值的处理: 溢出和除以零是可检测的,可以被视为错误。例如,您可以将大于列允许范围的值视为错误,而不是将值截断以使其位于列的数据类型范围内。同样地,您可以将除以零视为错误,而不是将其视为产生 NULL 结果的运算。采用哪种方法取决于服务器 SQL 模式的设置。

以下讨论涵盖了高精度数学工作原理的几个方面,包括与旧应用程序的潜在不兼容性。最后,给出了一些示例,说明 MySQL 如何精确地处理数值运算。有关控制 SQL 模式的信息,请参见 第 7.1.11 节,“服务器 SQL 模式”.