mysql+navicat的float精度问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql+navicat的float精度问题相关的知识,希望对你有一定的参考价值。
mysql+navicat设置float类型后,我在表中输入一个小数后,他老是四舍五入只保存整数部分,请问用navicat怎么设置数据表的类型让他保留两位小数.(用navicat设置)
保留两位小数:navcat 的 “长度” 和 “十进位” 栏 来决定例如:
长度 10,十进位 2,就是0000000000.00 参考技术A float的精度较差,推荐小数位数超过2且整数部分较大的采用double
MySQL 的 float(24) 列所需的存储大小是多少?
【中文标题】MySQL 的 float(24) 列所需的存储大小是多少?【英文标题】:What is the storage size required for a float(24) column with MySQL? 【发布时间】:2019-12-17 16:43:43 【问题描述】:我问是因为官方文档中有2个不同的答案...
是 8 个字节吗? https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
从 0 到 23 的精度会产生一个 4 字节的单精度 FLOAT 列。从 24 到 53 的精度会产生一个 8 字节的双精度 DOUBLE 列。
还是 4 个字节? https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html#data-types-storage-reqs-numeric
FLOAT(p):如果 0
我认为第一页有一个错误,因为 float(24) 只需要 4 个字节的存储空间与 PostgreSQL 和 MS SQL Server...那么为什么 MySQL 会这样做呢?
【问题讨论】:
我建议您将此作为文档错误提交给 MySQL,看看他们修复了哪个。 由于底层格式具有 24 位二进制精度(“逐渐下溢”期间除外),因此 24 应该是 4 个字节。我在 5.6 上测试过;它是。注意,当你用FLOAT(30)
,再做SHOW CREATE TABLE
,就说明转成DOUBLE
了。
【参考方案1】:
正如@RickJames 建议的那样 - 如果您使用SHOW CREATE TABLE
进行测试,您当然可以看到FLOAT(24)
是浮点数,而FLOAT(25)
是双精度数。
【讨论】:
以上是关于mysql+navicat的float精度问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 MariaDB/MySQL 在 Peewee 中指定 FLOAT 列精度