建了一张测试表,字段a为float(11,4),字段b为double (11,4),字段a为decimal (11,4)
1、插入数据:INSERT INTO test (a, b, c)  VALUE ('123456.888','123456.888','123456.888')为啥字段a的值是“123456.8906”?2、插入数据:INSERT INTO test (a, b, c)  VALUE ('92345678.888','92345678.888','92345678.888')为啥全部变了,不是添加的值,不能等于11位吗?3、怎么选择合适的数据类型,比如decimal用于账务计算类的,那float,和double呢,float(11,4)括号的11是精度,精度的意思是精确到11 位吗?

解决方案 »

  1.   

    建议都用decimal  
    float double这种低精度的唯一好处就是占用空间少而已
      

  2.   

    你的插入的 INSERT INTO test (a, b, c)  VALUE ('92345678.888','92345678.888','92345678.888')
    在我数据库当中报错,因为你设置的 11 是指的是位数包括小数点,因此是超过11位。
    单精度浮点数Float:  当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定。
    double 和decimal 数值范围较大。因此建议使用 double  以及decimal数值类型
      

  3.   

    你的场景decimal(m,n),如果精度要求不是严格的话选择double float,float double虽然精度低,但占用的空间比较小。