暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的函数和运算符 - 精确数学 - 数值类型

林员外聊编程 2021-10-08
166
MySQL 提供了对精确数学的支持:数值处理会产生非常精确的结果,并对无效值进行高度控制。精确数学是基于以下两个特点:
 
 控制服务器接受或拒绝无效数据的严格程度的 SQL 模式。
 
 用于定点运算的 MySQL 库。
 
这些特性对数字操作有一些影响,并高度符合标准SQL
 
 精确计算:对于精确值的数字,计算不会引入浮点错误。相反,使用的是精确的精度。例如,MySQL .0001 这样的数字作为一个精确的值而不是一个近似值,并将其求和 10,000 次,得到的结果正好是 1,而不是一个仅仅“接近” 1 的值。
 
 定义良好的舍入行为:对于精确值数,ROUND()的结果取决于其参数,而不是底层C库的工作方式等环境因素。
 
 平台独立性:对精确数值的操作在不同平台(Windows Unix)上是相同的。
 
 对无效值的处理控制:溢出和除零可被检测到,并可视为错误。例如,可以将对列来说太大的值视为错误,而不是截断该值以使其位于列的数据类型范围内。类似地,可以将除零视为一个错误,而不是产生 NULL 结果的操作。采用哪种方法取决于服务器SQL模式的设置。
 
下面的讨论涵盖了精确数学如何工作的几个方面,包括可能与旧应用程序的不兼容。最后,给出了一些示例,演示了 MySQL 如何精确地处理数值运算。
 
数值类型
 
精确数学用于精确值操作的范围包括精确值数据类型(整数和 DECIMAL 类型)和精确值数字字面量。近似值数据类型和数字字面量作为浮点数处理。
 
精确数值字面量有整数部分或小数部分,或两者都有。他们可能会有符号。例如: 1.23.4-5-6.78+9.10
 
近似值数字字面量用科学记数法表示,带有尾数和指数。任何一方都可以有符号。例如: 1.2E3, 1.2E-3-1.2E3-1.2E-3
 
两个看起来相似的数字可能会被区别对待。例如,2.34 是一个精确值(定点)数字,而 2.34E0 是一个近似值(浮点)数字。
 
DECIMAL 数据类型是定点类型,并且计算是精确的。在 MySQL 中,DECIMAL 类型有几个同义词:NUMERIC, DEC, FIXED。整数类型也是精确值类型。
 
FLOAT DOUBLE 数据类型是浮点类型,计算是近似的。在 MySQL 中,FLOAT DOUBLE 的同义词是 DOUBLE PRECISION REAL
 
 
 
 
 
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/precision-math-numbers.html

文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论