社区
MySQL
帖子详情
mysql Float类型和double类型的区别
fanyi2003
2005-03-11 07:38:24
我在mysql数据库中设置了float(32,5)类型的数据 插入数据3947483999会变成3947483904.00000 而改成double(32,5)就正常了
请问:为什么会出现这种现象?
float,double型的数据在mysql中的存储方式是什么样的
...全文
4103
3
打赏
收藏
mysql Float类型和double类型的区别
我在mysql数据库中设置了float(32,5)类型的数据 插入数据3947483999会变成3947483904.00000 而改成double(32,5)就正常了 请问:为什么会出现这种现象? float,double型的数据在mysql中的存储方式是什么样的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fanyi2003
2005-03-14
打赏
举报
回复
就是因为看了<MySQL 3.23 中文参考手册>一文,所以设置了float(32,5)这样一个字段来测试float
float是用4个([1,24))或者8个([24,53))字节存储数据,
我设置了数据3647483999插入表中 结果得到3647483904.00000 ,修改任何小数部分也得到3647483904.00000 然而修改成3947483904.00000,3997483904.00000 却成功保存
我开始怀疑是不是mysql的float类型的数据的高位字节和低位字节之间的进位有问题啊?
后来发现应该是与科学记数法有关,不管你设置多少位小数,当整数部分超过512的时候 mysql总是以科学技术法的方式来保存数据....
不知道这个分析对不对?
今晚打老虎2010
2005-03-11
打赏
举报
回复
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)代表一个双精密浮点数字。
jxhj
2005-03-11
打赏
举报
回复
double比float支持的位數要長
MySQL
56,677
社区成员
56,708
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章