建了一张测试表,字段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、插入数据: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 位吗?
float double这种低精度的唯一好处就是占用空间少而已
在我数据库当中报错,因为你设置的 11 是指的是位数包括小数点,因此是超过11位。
单精度浮点数Float: 当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定。
double 和decimal 数值范围较大。因此建议使用 double 以及decimal数值类型