精确存放超过1亿并且有两位小数的话,用什么类型?float可以吗?

解决方案 »

  1.   

    mysql> alter table t  modify  F decimal(12,2);
    Query OK, 8 rows affected (0.77 sec)
    Records: 8  Duplicates: 0  Warnings: 0
     
    mysql> update t set f=100000000.34;
    Query OK, 8 rows affected (0.00 sec)
    Rows matched: 8  Changed: 8  Warnings: 0
     
    mysql> select * from t;
    +------+------+--------------+
    | id   | name | F            |
    +------+------+--------------+
    |    1 | NULL | 100000000.34 |
    |    2 | NULL | 100000000.34 |
    |    3 | NULL | 100000000.34 |
    |    4 | NULL | 100000000.34 |
    |    5 | NULL | 100000000.34 |
    | NULL | a    | 100000000.34 |
    | NULL | a    | 100000000.34 |
    |   11 | b    | 100000000.34 |
    +------+------+--------------+
    8 rows in set (0.00 sec)
      

  2.   

    用decimal
    float是非精度浮点数
      

  3.   

    用bigint
    用的时候,计算后再除100即可,以避免浮点数运算误差。