• Mysql 存小数的问题


    最近做一个报表,有个字段保存money,涉及到小数,没有多想就将数据库字段设置成了float,等查询出来,真正的值后面加了一坨随机数字,太呕吐了,查了点资料,将该字段格式改成了decimal(10,1),就ok了。

    例如,语句FLOAT (5,2)规定显示的值不会超过5位数字,小数点后面带有2位数字。

    对于小数点后面的数字个数超过了允许的数目的值,系统会自动将它四舍五入为最接近它的值,然后插入它。

    mysql> create table data(price float(5,2));

    Query OK, 0 rows affected

    mysql> insert into data values (13.6),(876.90),(-5.2),(-123.456);

    Query OK, 4 rows affected

    Records: 4 Duplicates: 0 Warnings: 0

    mysql> select * from data;

    +---------+

    | price |

    +---------+

    | 13.6 |

    | 876.9 |

    | -5.2 |

    | -123.46 |

    +---------+

    4 rows in set

    DECIMAL 数据类型用于要求非常高的精确度的计算中,这些类型允许指定数值的精确度和计数方法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计 数方法表示小数点后数字的个数。例如,语句DECIMAL (5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。

    MySQL在内部把DECIMAL数据类型存储为字符串,更精确地保留它们的值。

    mysql> create table data_8(bad decimal(6,3));

    Query OK, 0 rows affected

    mysql> insert into data_8 values (1);

    Query OK, 1 row affected

    mysql> select * from data_8;

    +-----+

    | bad |

    +-----+

    | 1.000   |

    +-----+

    1 row in set

    忽略DECIMAL数据类型的精确度和计数方法修饰符将会使MySQL把所有标识为这个类型的字段的精确度默认为10,计算方法默认为0

    mysql> create table data_9 (test decimal

    );

    Query OK, 0 rows affected

    mysql> desc data_9;

    +-------+---------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+---------------+------+-----+---------+-------+

    | test | decimal(10,0) | YES | | NULL | |

    +-------+---------------+------+-----+---------+-------+

    1 row in set

  • 相关阅读:
    mac下进行配置android真机调试环境
    给技术人上的管理课:控制和计划
    PNG 文件结构
    BMP文件结构
    开发环境FAQ
    VS2008通过 map 和 cod 文件定位崩溃代码行
    【Demo 0009】Android 组件(BroadcastReceiver)
    【Demo 0007】Android 信使(Intent)
    【Demo 0006】Android 组件(Activity)
    使用Topshelf 5步创建Windows 服务
  • 原文地址:https://www.cnblogs.com/geeek/p/4118597.html
Copyright © 2020-2023  润新知