登录
首页 >  数据库 >  MySQL

使用Navicat存float类型的小数

来源:SegmentFault

时间:2023-02-24 09:50:27 214浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《使用Navicat存float类型的小数》,涉及到MySQL、navicat,有需要的可以收藏一下

问题描述

使用

navicat
存储一个
float
类型的小数,添加字段后,其他的保持默认设置。

clipboard.png

然后存一条数据,

float
类型的数据为
129364.57
。保存后的结果:

clipboard.png

舍弃了小数部分,然后四舍五入为

129365

然后又重新试了几个其他的小数,发现都是这个情况。

猜测

1.联想到以前学C语言的时候,不同数据类型所占长度不同,所以就猜测可能是精度不够了。

因为是二进制,所以在存储小数的时候只能有

2的负n次幂
这样的相加得出的小数,所以我就试一下
129364.25
,依然不行,还是没有小数部分,只有整数部分,并且同样满足四舍五入。

所以不是精度的问题。

2.既然没有小数,是不是默认没有小数部分呢。

然后重新设计表,发现果然小数部分为0,然后将其改为2:

clipboard.png

再重新测试:

clipboard.png

正常保存!

后续

google了一下网上的答案,发现有对存储长度的限制,然后就去官方文档看了看。

标题就很能说明问题

clipboard.png

估计值
。感觉官方文档并没有说什么东西,但是我们知道了
float
的估计是有长度和精度两个参数控制的。然后再结合google的结果,发现
float
只支持
8位
,当整数加小数部分超出8位,它就开始
估计
了。

当然也不是说所有的8位都可以,也是有个范围的,因为

float
使用4个字节,所以当数值大小超过
65536
(2的16次方),即使八位数也是会出现
估计
的现象。比如我们存一个
65536.777
,但是保存后结果确不是这个数:

clipboard.png

总结

1.小于

65536
,8位以内数字正常显示;超出8位进行
近似估计
(也就是数值不准)。
2.大于
65536
,接近8位的数字开始
估计

今天关于《使用Navicat存float类型的小数》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表