前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL中的float和decimal类型有什么区别

MySQL中的float和decimal类型有什么区别

作者头像
全栈程序员站长
发布2022-07-08 12:27:31
2.2K0
发布2022-07-08 12:27:31
举报
文章被收录于专栏:全栈程序员必看

decimal 类型可以精确地表示非常大或非常精确的小数。大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal类型存储而不失其精确性。该类型对于必须避免舍入错误的应用程序(如记账)很有用。

float是浮点数,不能指定小数位。 decimal是精确数,可以指定精度。 对mysql 5来说 decimal(p,s)中p最大为65,S最大为30 decimal数据类型最多可存储 38 个数字,它存储了一个准确(精确)的数字表达法,不存储值的近似值。

当数据值一定要按照指定精确存储时,可以用带有小数的decimal数据类型来存储数字。 float和real数据类型被称为近似的数据类型。不存储精确值.当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用integer、decimal、money或smallmone数据类型。

在 WHERE 子句搜索条件中(特别是 = 和 <> 运算符),应避免使用float或real列。最好限制使用float和real列做> 或 < 的比较。

float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,用于定义货币要求精确度高的数据。在数据迁移中,float(M,D)是非标准定义,最好不要这样使用。M为精度,D为标度。

mysql> create table t1(c1 float(10,2), c3 decimal(10,2)); Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values(1234567.23, 1234567.23); Query OK, 1 row affected (0.01 sec)

mysql> select * from t1; +————+————+ | c1 | c3 | +————+————+ | 1234567.25 | 1234567.23 | +————+————+ 1 row in set (0.02 sec)

mysql> insert into t1 values(9876543.21, 9876543.12); Query OK, 1 row affected (0.00 sec)

mysql> mysql> select * from t1; +————+————+ | c1 | c3 | +————+————+ | 1234567.25 | 1234567.23 | | 9876543.00 | 9876543.12 | +————+————+ 2 rows in set (0.00 sec)

不定义fload, double的精度和标度时,存储按给出的数值存储,这于OS和当前的硬件有关。

decimal默认为decimal(10,0)

因为误差问题,在程序中,少用浮点数做=比较,可以做range比较。如果数值比较,最好使用decimal类型。

精度中,符号不算在内:

mysql> insert into t1 values(-98765430.21, -98765430.12); Query OK, 1 row affected (0.01 sec)

mysql> select * from t1; +————–+————–+ | c1 | c3 | +————–+————–+ | 1234567.25 | 1234567.23 | | 9876543.00 | 9876543.12 | | -98765432.00 | -98765430.12 | +————–+————–+ 3 rows in set (0.00 sec)

float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112360.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档