zoukankan      html  css  js  c++  java
  • [DB2]DB2中的数值类型

    在DB2数据库的使用过程中,遇到一个问题:

    一数据表的列设置为DECIMAL(20,5)
    但是存入的数据可能是2.1,也可以是2.212这样精度不确定,存储时数据库会全部自动补齐5位小数。

    经过一番搜索和群里的问询,最终发现可以使用DECFLOAD类型替换DECIMAL类型。主要说明(来源于百度百科)如下:

    DECFLOAT

    DECFLOAT 是 DB2 9.5 引入的一种新的数据类型,它是一种十进制浮点数据类型,适合处理精确的十进制业务数据。浮点数据类型例如 REAL 和 DOUBLE 类型都只是通过二进制近似方式来处理十进制数据,所以它们不适合大部分使用十进制数据的商业应用。
    DECFLOAT 合并了 DECIMAL 类型的精度和 FLOAT 类型的一些性能优势,所以它是一种结果精确而且处理高效的数据类型
    DECFLOAT 提供 16 位和 34 位两种精度的浮点数据类型。分别为表示为 DECFLOAT(16) 和 DECFOAT(34)。如果没有指明精度,DECFLOAT 默认为 DECFLOAT(34)。这两种精度的数据分别存储在 8 字节和 16 字节的空间里。

    编辑本段DECFLOAT &DECIMAL

    下面这个例子来说明 DECFLOAT 类型和 DECIMAL 类型的不同
    CREATE TABLE EMPLOYEE (
    SALARY DEC(14,2),
    BONUS DECFLOAT(16),
    COMMISSION DECFLOAT(34)
    );
    INSERT INTO EMPLOYEE VALUES (
    123456.78,
    1234567890.12,
    123456789012345678901234.56
    );
    SALARY
    BONUS
    COMMSSION
    123456.78
    1234567890.12
    123456789012345678901234.56
    如果我们插入精度更大的数据,对于 BONUS 和 COMMISSION 这两列,我们不需要作任何更改,而对于 SALARY 列,那就需要修剪数据使得数据符合 DECIMAL 列指明的精度。结果如下:
    INSERT INTO EMPLOYEE VALUES (
    123456.7891,
    1234567890.1234,
    123456789012345678901234.5678
    );
     
    SALARY
    SALARY
    COMMISSION
    123456.78
    1234567890.1234
    123456789012345678901234.5678
  • 相关阅读:
    工厂设计模式
    二分查找(java实现)
    集合
    JS中,根据div数值判断弹出窗口
    用JS,打印正立三角形
    用JS,打印99乘法表
    用JS,求斐波那契数列第n项的值
    用JS 循环做一个表格
    JS中,如何判断一个被转换的数是否是NaN
    用JS写一个简单的程序,算出100中7的倍数的最大值
  • 原文地址:https://www.cnblogs.com/tukzer/p/2865310.html
Copyright © 2011-2022 走看看