# 12.25 精密数学
MySQL 提供对精度数学的支持:数值处理导致极其准确的结果和对无效值的高度控制。精密数学基于以下两个特征:
SQL 模式控制服务器对接受或拒绝无效数据的严格程度。
用于定点算术的 MySQL 库。
这些特性对数值运算有几个影响,并提供与标准 SQL 的高度合规性:
精确计算:对于精确值数字,计算不会引入浮点错误。相反,使用精确的精度。例如,MySQL 处理一个数字,例如
.0001
作为一个精确值而不是一个近似值,并将其相加 10,000 次会产生精确的结果1
,而不是仅仅“接近”于 1 的值。定义明确的舍入行为:对于精确值数字,结果
圆形的()
取决于它的论点,而不是诸如底层 C 库如何工作的环境因素。平台独立性: 对精确数值的操作在不同平台(如 Windows 和 Unix)上是相同的。
控制无效值的处理:溢出和除以零是可检测的,可以视为错误。例如,您可以将对于列来说太大的值视为错误,而不是将值截断以位于列的数据类型范围内。同样,您可以将除以零视为错误,而不是产生结果的操作
空值
.采用哪种方法的选择取决于服务器 SQL 模式的设置。以下讨论涵盖了精密数学如何工作的几个方面,包括可能与旧应用程序不兼容。最后,给出了一些例子来演示 MySQL 如何精确地处理数字操作。有关控制 SQL 模式的信息,请参阅第 5.1.11 节,“服务器 SQL 模式”.