Home > Database > Mysql Tutorial > mysql 中的decimal

mysql 中的decimal

WBOY
Release: 2016-06-07 15:53:15
Original
1685 people have browsed it

http://zhidao.baidu.com/link?url=yvsR3r2G6wemYZxZZTfygP0Sf4lxVxkusF8ZbU0QLE82cB590XHtzsZtpYG-7HBLOnZL2M3ytd41WZYEL70RFa http://www.linuxidc.com/Linux/2013-07/88032.htm 可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float

http://zhidao.baidu.com/link?url=yvsR3r2G6wemYZxZZTfygP0Sf4lxVxkusF8ZbU0QLE82cB590XHtzsZtpYG-7HBLOnZL2M3ytd41WZYEL70RFa


http://www.linuxidc.com/Linux/2013-07/88032.htm


可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理。这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12.
幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上面的问题:
NUMERIC 和 DECIMAL 类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例 如:

salary DECIMAL(5,2)

在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -99.99 到 99.99。(实际上 MySQL 在这个列中可以存储的数值可以一直到 999.99,因为它没有存储正数的符号)。

译者注:

M 与D 对DECIMAL(M, D) 取值范围的影响

类型说明 取值范围(MySQL = 3.23)
Copy after login

1.首先,对于精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,numericdecimal同义,numeric将自动转成decimal

DECIMALMySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·M是数字的最大数(精度)。其范围为165(在较旧的MySQL版本中,允许的范围是1254),默认值是10

·D是小数点右侧数字的数目(标度)。其范围是030,但不得超过M

说明float4个字节,double8个字节,decimail(M,D)M+2个字节

DECIMAL(5,2) 的最大值为9 9 9 9 . 9 9,因为有个字节可用。

DECIMAL(M, D) 取值范围的影响

类型说明取值范围(MySQL )取值范围(MySQL >= 3.23

MySQL =3.23
DECIMAL(4, 1) -9.9  99.9 -999.9  9999.9

DECIMAL(5,1) -99.9  999.9 -9999.9  99999.9

DECIMAL(6,1) -999.9  9999.9 -99999.9  999999.9

DECIMAL(6,2) -99.99  999.99 -9999.99  99999.99

DECIMAL(6,3) -9.999  99.999 -999.999  9999.999

MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。

结论:

当数值在其取值范围之内,小数位多了,则直接截断小数位。

若数值在其取值范围之外,则用最大()值对其填充。


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template