精华内容
下载资源
问答
  • mysql decimal、numeric数据类型

    千次阅读 2014-05-29 17:55:40
    可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候...幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上面的问题: NUMERIC

    可能做程序的人都知道,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) 取值范围(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) 的取值范围。

    还有一种数据类型也是比较棒的: 那就是LongBlob,这种数据类型可以直接把图像文件存到数据库中!

     

    笔者,最近在研究mysql的decimal数据类型,现把数据实验结果公布如下

    数据库版本:Server version: 5.0.45 Source distribution

    1、创建表结构

    create table ta (a float,b decimal(10,5));

     

    2、插入数据

    insert into ta (a,b) values(1,12345.123423);

     

    实际插入的b列数据为:12345.12342

    insert into ta (a,b) values(1,123456.1234);

     

    实际插入的b列数据为:99999.99999

    结论:decimal数据类型,

    1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。

    2、当整数部分合法,小数部分多余的位数,直接截断。

    二、numeric(M,D)

    当看到numeric数字类型后,大部分都会看成了number,我也几次都弄错了。

    numeric数字类型和decimal数字类型的一样的

    修改a列字段类型: alter table ta change a a numeric(10,5);

    show create table ta;
    | ta    | CREATE TABLE `ta` (
    `a` 
    decimal(10,5default NULL,
    `b` 
    decimal(10,5default NULL
    ) ENGINE
    =MyISAM DEFAULT CHARSET=utf8 |

     

    可见,在myslq5.0中,numeric和decimal数据类型是一致的,两者的精度均准确为M位数字。 


    展开全文
  • 我想通过odbc接口连接sql server服务器,并获取decimal或numeric类型数据。在执行了SQLExecDirect之后,给描述符句柄的SQL_DESC_PRECISION和SQL_DESC_SCALE字段设置了合适的,再通过SQLGetData获取数据,发现只能...
  • 可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理。这样我们在存取货币的时候自然遇到问题,我的default为:0.00而实际...
    (转载)http://www.cnblogs.com/qiantuwuliang/archive/2010/11/03/1867802.html

    可能做程序的人都知道,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) 取值范围(MySQL >= 3.23) 

    代码
    DECIMAL(41-9.9 到 99.9 -999.9 到 9999.9 
       DECIMAL(51-99.9 到 999.9 -9999.9 到 99999.9 
       DECIMAL(61-999.9 到 9999.9 -99999.9 到 999999.9 
       DECIMAL(62-99.99 到 999.99 -9999.99 到 99999.99 
       DECIMAL(63-9.999 到 99.999 -999.999 到 9999.999

     

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

    还有一种数据类型也是比较棒的: 那就是LongBlob,这种数据类型可以直接把图像文件存到数据库中!

     

    笔者,最近在研究mysql的decimal数据类型,现把数据实验结果公布如下

    数据库版本:Server version: 5.0.45 Source distribution

    1、创建表结构

     

    create table ta (a float,b decimal(10,5));

     

     

    2、插入数据

    insert into ta (a,b) values(1,12345.123423);

    实际插入的b列数据为:12345.12342

    insert into ta (a,b) values(1,123456.1234);

     

    实际插入的b列数据为:99999.99999

    结论:decimal数据类型,

    1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。

    2、当整数部分合法,小数部分多余的位数,直接截断。

    二、numeric(M,D)

    当看到numeric数字类型后,大部分都会看成了number,我也几次都弄错了。

    numeric数字类型和decimal数字类型的一样的

    修改a列字段类型: alter table ta change a a numeric(10,5);

    show create table ta;
    | ta    | CREATE TABLE `ta` (
    `a` 
    decimal(10,5default NULL,
    `b` 
    decimal(10,5default NULL
    ) ENGINE
    =MyISAM DEFAULT CHARSET=utf8 |

    可见,在myslq5.0中,numeric和decimal数据类型是一致的,两者的精度均准确为M位数字。 

    转载于:https://www.cnblogs.com/Robotke1/p/3327089.html

    展开全文
  • MySQL支持多种类型,不同的数据类型提供不同的取值范围,可以存储的范围越大,所需的存储空间也会越大。大致可以分为四类:数值、日期/时间、字符串(字符)和二进制类型。 数值类型 MySQL支持所有标准SQL数值数据...

    MySQL 数据类型

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

    MySQL支持多种类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。大致可以分为四类:数值、日期/时间、字符串(字符)和二进制类型。

    数值类型

    MySQL支持所有标准SQL数值数据类型。整数类型、浮点数类型和定点数类型

    • 整数类型包括 TINYINTSMALLINTMEDIUMINTINTBIGINT
    • 浮点数类型包括 FLOATDOUBLE
    • 定点数类型为 DECIMAL

    整数类型

    整数类型又称数值型数据,数值型数据类型主要用来存储数字。其属性字段可以添加 AUTO_INCREMENT自增约束条件。

    小数类型(浮点数和定点数型类型)

    • 不论是定点类型还是浮点类型,如果插入值的精度超出实际定义的精度范围,系统会自动进行四舍五入处理,使值的精度达到要求
    • 浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题,所以尽量避免做浮点数比较。

    浮点数型类型

    • 浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);
    • 浮点类型和定点类型都可以用**(M, D)来表示,其中M称为精度,表示总共的位数(小数点"."不占位数);D称为标度,表示小数的位数**。
    • 如:float(6,2)的含义数据是float型,数据长度是6,小数点后保留2位。所以,1234.56是符合要求的
    • 浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。
    • FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定)
    • 建议在定义浮点数时,如果不是实际情况需要,最好不要使用指定小数精度的方法,如果使用了,可能会影响数据库的迁移

    定点数型类型

    • 定点类型只有一种,就是 DECIMAL
    • DECIMAL 如果不指定精度,默认 D 值为 0、M 值为 10,即(10,0),就是认为是整数,默认情况下也就是表示整数,插入小数的话小数部分会被舍弃掉
    • DECIMAL 类型不同于 FLOAT 和 DOUBLE。DECIMAL实际上是以字符串的形式存放的,DECIMAL 可能的最大取值范围与 DOUBLE 相同,但是有效的取值范围由 M 和 D 决定。如果改变 M 而固定 D,则取值范围将随 M 的变大而变大,占用 M+2 个字节。
    • 如果要对数据的精度要求比较高,如货币、科学数据等,还是选择定点数DECIMAL类型l比较安全

    总览表

    类型 类型名称 大小 范围(有符号) 范围(无符号)unsigned 非负数 用途
    整数类型 TINYINT 1 bytes (-128,127) (0,255) 很小的整数
    整数类型 SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 小的整数
    整数类型 MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 中等大小的整数
    整数类型 INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 普通大小的整数
    整数类型 BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    浮点数类型 FLOAT 4 bytes (-3.402823466E+38,-1.175494351E-38) 0 和 (1.175494351E-38,3.402823466E+38) 单精度、浮点数值
    浮点数类型 DOUBLE 8 bytes (-1.7976931348623157E+308,-2.2250738585072014E-308) 0 和 (2.2250738585072014E-308,1.7976931348623157E+308) 双精度、浮点数值
    定点书类型 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值,同DOUBLE型 依赖于M和D的值,同DOUBLE型 小数值
    • 显示宽度和数据类型的取值范围是无关的。显示宽度只是指明 MySQL 最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。例如,year 字段插入 19999,当使用 SELECT 查询该列值的时候,MySQL 显示的将是完整的带有 5 位数字的 19999,而不是 4 位数字的值。

    • 其他整型数据类型也可以在定义表结构时指定所需的显示宽度,如果不指定,则系统为每一种类型指定默认的宽度值。

    • 不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

    展开全文
  • 精度用户定义的,因此可以将此数据类型用于货币汇率。 要在文件中存储小数,可以使用“无偏”功能或使用流I / O。 例子 用法示例: # include " decimal.h " using namespace dec ; using namespace std ; // ...
  • float类型表示单精度浮点数值,double类型表示双精度浮点数值,float和double都是浮点型,而decimal是定点型; MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该的总共长度,D表示小数点后面的...

    float类型表示单精度浮点数值,double类型表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

    MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(5,2)的 可显示为999.99,MySQL保存值时会进行四舍五入,如果插入999.009,则结果为999.01。

    float和double在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

    先创建一个表:

    CREATE TABLE test(
    f FLOAT(10,2) DEFAULT NULL,
    d DOUBLE(10,2) DEFAULT NULL,
    de DECIMAL(10,2) DEFAULT NULL
    );

    insert三条数据如下所示:

    INSERT INTO test(f,d,de) VALUES(1.23,1.23,1.23);
    INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.23);
    INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.234);

    然后修改表结构并新增一条数据:

    ALTER TABLE test MODIFY f FLOAT;
    ALTER TABLE test MODIFY d DOUBLE;
    INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.234);

    此时计算求和值如下图所示:

    SELECT SUM(f),SUM(d),SUM(de) FROM test;

    float和double求SUM的结果都是不精确的,只有decimal求SUM得到的是精准数值:

    所以,decimal 类型是适合财务和货币计算的128位数据类型。
     

    https://blog.csdn.net/t1anyuan/article/details/70169524

    https://blog.csdn.net/hanghangde/article/details/50483779?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

    http://www.zzvips.com/article/87497.html

    展开全文
  • MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型。 其区别在于,float,double等非标准类型,在DB中保存的近似,而Decimal则以字符串的形式保存数值。 float,double类型可以存浮点数...
  • 1、参数value可以是整数,字符串,元组,float或另一个Decimal对象。如果未给出,则返回Decimal('0')。 2、Decimal(0.1111) 输出结果: 0.111100000000000004307665335545607376843690872...
  • decimal

    2016-11-25 11:04:00
    可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候...幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上面的问题: NUME...
  • MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型。 其区别在于,float,double等非标准类型,在DB中保存的近似,而Decimal则以字符串的形式保存数值。float,double类型可以存浮点数...
  • 数据类型

    2021-01-18 09:27:17
    浮点型数据类型(类型后加小括号(m,n)m有效字段的n是小数点后面的): float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值 float和double都是浮点型而decimal是定点型; MySQL...
  • MySQL数据类型

    2020-07-30 11:14:38
    数值类型 MySQL支持所有标准SQL数值数据类型。...BIT数据类型保存位字段,并且支持MyISAM、MEMORY、InnoDB和BDB表。 作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面
  • MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型。 其区别在于,float,double等非标准类型,在DB中保存的近似,而Decimal则以字符串的形式保存数值。 float,double类型可以存浮点数...
  • C# 数据类型

    2017-12-15 15:56:16
    C#里面的数据类型可分为3大类:类型,引用类型,指针类型。指针类型只能用于安全模式,所以我只用考虑前两个。 类型:结构类型,枚举类型,简单类型(包括整数类型,浮点类型,字符类型,decimal类型,布尔类型...
  • 4.2 MySQL数据类型

    2021-06-05 17:57:47
    为每张表的每个字段选择合适的数据类型是数据库设计过程中一个重要的步骤。 (1) 数字类型 数字分为整数和小数。 其中整数整数类型表示,小数用浮点数类型和定点数类型表示。 浮点数类型包括单精度浮点数FLOAT类型...
  • 数据库之字段数据类型

    千次阅读 热门讨论 2017-08-08 10:53:54
    bigint:整数值超过int数据范围时才可以使用 int:将一个数值向下取整为最接近的整数的函数 smallint:需要 2 个字节存储的整数。 TINYINT : TINYINT 型的字段如果设置为UNSIGNED类型,只能存储从0到255的整数,不...
  • mysql的数据类型

    2020-07-27 06:46:44
    数值类型 MySQL支持所有标准SQL数值数据类型。...BIT数据类型保存位字段,并且支持MyISAM、MEMORY、InnoDB和BDB表。 作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了
  • MySQL中定义数据字段的类型对你数据库的优化非常重要的。 MySQL支持多种类型,大致可以分为三类:...BIT数据类型保存位字段,并且支持MyISAM、MEMORY、InnoDB和BDB表。 作为SQL标准的扩展,MySQL也支持整数类型TIN
  • sqlite数据类型

    2014-03-19 15:47:00
    sqlite数据类型(时间日期double等) ...NULL、INTEGER、REAL、TEXT、BLOB但是,sqlite3也支持如下的数据类型smallint16位整数integer32位整数decimal(p,s)p精确,s小数位数float...
  • mysql decimal

    2018-04-17 16:39:00
    可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数...幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上...
  • 整型:byte、sbyte、short、ushort、int、uint、long、ulong浮点型:float、double、decimal布尔型:bool字符型:char以下各个数据类型的具体描述注意:1.所有整数默认int类型,所有小数默认double类型 2....

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 229
精华内容 91
关键字:

decimal是整数值数据类型