Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

14.24 精度数学

MySQL 提供了精度数学支持:数值处理结果非常准确,且对无效值的控制非常严格。精度数学基于以下两个特征:

  • SQL 模式控制服务器对无效数据的接受或拒绝。

  • MySQL 固定点算术库。

这些特征对数值操作和标准 SQL 的符合性有几个重要的影响:

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

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

  • 平台独立性:精确数字值的操作在不同的平台上,如 Windows 和 Unix,都是相同的。

  • 对无效值的控制:溢出和除以零是可检测的,可以作为错误处理。例如,您可以将太大的值视为错误,而不是将其截断以适应列的数据类型。类似地,您可以将除以零视为错误,而不是将其作为产生 NULL 结果的操作。选择哪种方法取决于服务器 SQL 模式的设置。

以下讨论涵盖了精度数学的几个方面,包括与旧应用程序的可能不兼容性。在结尾,提供了一些示例,展示了 MySQL 如何精确地处理数值操作。有关控制 SQL 模式的信息,请参阅 第 7.1.11 节,“服务器 SQL 模式”