mysql的decimal,mysql的decimal对应java
decimal在mysql中是什么类型
decimal是数字数据类型中的一种,属于定点数其标准格式是DECIMAL(M,D),其中M为长度,D为小数位数,其精度要比single浮点数和double浮点数为高。对于那些如银行存款这类精度要求的项目可以使用decimal类型,当然系统处理该类型的开销要比浮点数为高。请注意decimal在不指定精度的情况下将使用默认精度整数10位小数0位也就是10位整数。
decimal是什么数据类型?
decimal是MySQL中存在的精准数据类型。MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准。区别:float,double等非精准类型,在DB中保存的是近似值。Decimal则以字符串的形式保存精确的原始数值。
扩展资料
对SQL Server而言,decimal和numeric视为相同的类型,它们可用来保存具有小数点而且数值确定的数值。它们不像float和real是用来保存近似值。此类型的列其声明方式为decima[(p[,s])]或numericl[(p[,s])]。其中p是此数值全部的位数,含小数部分但不包括小数点,s则是小数的位数。
p值称为此数值的精确度,例如:decimal(10,3)表示共有7位整数3位小数,此例的精确度为10位。此类型的列可保存的值范围为1038-1到-1038-1之间。其占用存储空间依精确度不同而不同,下表给出Decimal类型变量精确度和占用空间的关系。
MySQL中的float和decimal类型有什么区别
decimal 类型可以精确地表示非常大或非常精确的小数。大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal类型存储而不失其精确性。该类型对于必须避免舍入错误的应用程序(如记账)很有用。
float是浮点数,不能指定小数位。
decimal是精确数,可以指定精度。
对mysql 5来说 decimal(p,s)中p最大为65,S最大为30
decimal数据类型最多可存储 38 个数字,它存储了一个准确(精确)的数字表达法,不存储值的近似值。
当数据值一定要按照指定精确存储时,可以用带有小数的decimal数据类型来存储数字。
float和real数据类型被称为近似的数据类型。不存储精确值.当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用integer、decimal、money或smallmone数据类型。
在 WHERE 子句搜索条件中(特别是 = 和 运算符),应避免使用float或real列。最好限制使用float和real列做 或 的比较。
float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,用于定义货币要求精确度高的数据。在数据迁移中,float(M,D)是非标准定义,最好不要这样使用。M为精度,D为标度。
MySQL文档说`decimal` 的最大位数是 `65`,什么意思?
第一次看到decimal(m,d)一头雾水,知道肯定是个范围,但是不知道范围的规则,看了一些文章发现说的都不是很明白,于是去官网看了下。
大概意思是这样的:
decimal(m,d)
m是数字的最大位数,他的范围是从1-65;
d是小数点后的位数,他的范围是0-30,并且不能大于m。
如果m被省略了,那么m的值默认为10,
如果d被省略了,那么d的值默认为0.
举例表示:
1、decimal(5,2) 所指代的范围是-999.99~999.99 数字的最大位数是5位,小数点右侧是2位,即有两位小数。
2、decimal(7,6)所指代的范围是-9.999999~9.999999 数字的最大位数是7位,小数点右侧是6位,即有六位小数。
字的位数和所占字节数,有以下对应表:
小数点左侧位数
数据结构所占的字节数
1–2 1
3–4 2
5–6 3
7–9 4
举例表示:
decimal(18,9)小数位左右各为9位数,此数据所占以上表格即为4字节整数位,4字节小数位;
decimal(20,6)整数位为14位,小数位位6位,此数据需要4个字节给整数位的9位和3字节给另外的5位整数,另外小数位需要3个字节,总共是4+3+3 = 11个字节。
decimal不能够存储以“+”、“-”和“0”开头的数据,如果是“+”开头momo默认存为正数,而“-”开头则不存储
具体的对decimal的定义,可以在mysql源码中的strings/decimal.c文件中的decimal2bin()函数查看。