double比float支持的位數要長

解决方案 »

  1.   

    FLOAT[(M,D)] [ZEROFILL] 
    一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。 
    DOUBLE[(M,D)] [ZEROFILL] 
    一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。
      

  2.   

    就是因为看了<MySQL 3.23 中文参考手册>一文,所以设置了float(32,5)这样一个字段来测试floatfloat是用4个([1,24))或者8个([24,53))字节存储数据,我设置了数据3647483999插入表中 结果得到3647483904.00000  ,修改任何小数部分也得到3647483904.00000  然而修改成3947483904.00000,3997483904.00000 却成功保存 我开始怀疑是不是mysql的float类型的数据的高位字节和低位字节之间的进位有问题啊?
    后来发现应该是与科学记数法有关,不管你设置多少位小数,当整数部分超过512的时候 mysql总是以科学技术法的方式来保存数据....不知道这个分析对不对?