24精度数学_mysql5_1

24精度数学_mysql5_1

ID:14280080

大小:51.50 KB

页数:24页

时间:2018-07-27

24精度数学_mysql5_1_第1页
24精度数学_mysql5_1_第2页
24精度数学_mysql5_1_第3页
24精度数学_mysql5_1_第4页
24精度数学_mysql5_1_第5页
资源描述:

《24精度数学_mysql5_1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、24精度数学_MySql5_1第24章:精度数学目录24.1.数值的类型24.2.DECIMAL数据类型更改24.3.表达式处理24.4.四舍五入24.5.精度数学示例MySQL5.1提供了对精度数学的支持,也就是说,数值处理功能,它能给出极其精确的结果,并能对无效值进行高度控制。精度数学基于下述两种特性:·SQL模式,控制服务器接受或拒绝无效值的严格程度(请参见5.3.2节,“SQL服务器模式”)。·用于定点算法的MySQL库。对于数值操作,这些特性具有数种隐含意义:·精确计算:对于准确值数值

2、,计算不会引入浮点错误。相反,将使用准确的精度。例如,对于数值.0001,会将其当作准确值予以处理,而不是近似值,将其加10000次可获得准确的结果1,而不是近似于1的值。·定义良好的四舍五入特性:对于准确值数值,ROUND()的结果取决于其参量,而不是环境因素,如底层C库的工作方式等。·平台无关性:对准确数值的操作在不同平台上(如Unix和Windows)是相同的。·对无效值处理的控制:能够检测到溢出和除0情况,并会将其当作错误加以处理。例如,能够将对于某列来说过大的值当作错误对待,而不是对该

3、值进行截短使之位于列数据类型的范围内。同样,也会将除0当作错误,而不是会获得NULL结果的操作。至于选择那种方式,它是由系统变量sql_mode的设置决定的(请参见5.3.2节,“SQL服务器模式”)。这类特性的一个重要结果是,MySQL5.1提供了与标准SQL的高度兼容性。在下面的讨论中,介绍了精度数学的数种工作方式(包括与早期应用程序的可能的不兼容性)。在最后,给出了一些示例,演示了MySQL5.1是如何精确处理数值操作的。24.1.数值的类型对于准确值操作,精度数学的范围包括准确值的数据类

4、型(DECIMAL和整数类型)以及准确值数值文字。对于近似值数据类型和数值文字,仍会将其当作浮点数值予以处理。准确值数值文字具有整数部分和小数部分,或两者。它们可以是有符号的。例如:1、.2、3.4、-5、-6.78、+9.10。近似值数值文字采用科学计数法表示,包含尾数和指数。任意部分或两者均可以是带符号的。例如,1.2E3、1.2E-3、-1.2E3、-1.2E-3。对于看上去类似的数值,不需要均为准确值或近似值。例如,2.34是准确值(定点)数值,而2.34E0是近似值(浮点)数值。DEC

5、IMAL数据类型是定点类型,其计算是准确的。在MySQL中,DECIMAL类型有多个同义词:NUMERIC、DEC、FIXED。整数类型也是准确值类型。FLOAT和DOUBLE数据类型是浮点类型,其计算是近似的。在MySQL中,与FLOAT或DOUBLE同义的类型是DOUBLEPRECISION和REAL。24.2.DECIMAL数据类型更改本节讨论了MySQL5.1中DECIMAL数据类型(以及其同义类型)的特性,尤其是下述方面:·数字的最大数。·存储格式。·存储要求。·对DECIMAL列上界

6、的非标准MySQL扩展。在本节中,对于为较早MySQL版本编写的应用程序,在相应的地方指出了可能的不兼容性。DECIMAL列的声明语法是DECIMAL(M,D)。在MySQL5.1中,参量的取值范围如下:·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。对于M,最大值65意味着,对DECIMAL值的计算能精确到65位数字。这种65位数字的精度限制也适用于准确值数值文字,因此,这类文

7、字值的最大范围不同于以前的范围(在较早的MySQL版本中,十进制值能达到254位。不过,采用的是浮点计算,因而是近似计算而不是准确计算)。在MySQL5.1中,采用二进制格式保存DECIMAL列的值,将9个十进制数字打包在4字节中。对于每个值的整数部分和小数部分,其存储要求是分别确定的。每9个数字需要4字节,任何剩余的数字将占用4字节的一部分。例如,DECIMAL(18,9)列在小数点的每一侧均有9位数字,因此,整数部分和小数部分均需要4字节。DECIMAL(20,10)列在小数点的每一侧均有1

8、0位数字。对于每一部分,9位数字需要4字节,剩余的1位数字需要1字节。在下表中,给出了关于剩余数字的存储要求:剩余的数字字节数00112132425363748494与某些较早的MySQL版本不同,在MySQL5.1中,DECIMAL列不保存前导“+”字符或前导“0”数字。如果将+0003.1插入DECIMAL(5,1)列,将保存为3.1。为了适应该变化,必须更改依赖于早期行为的应用程序。在MySQL5.1中,DECIMAL列不允许保存大于列定义中隐含范围的值。例如,DECIMAL(3,0)列支

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。