问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL的float和decimal的区别疑问

发布网友 发布时间:2022-04-26 18:56

我来回答

1个回答

热心网友 时间:2022-04-08 04:51

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个字节
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 mysql中 float型问题 mysql float怎么定义 mysql里float是什么东西 mysql里float是什么东西? mysql float和double类型的区别 mysql往数据库插入float类型的数据 为什么数字不对? 我们从小背诵的百家姓,其实也有恐怖的一面,哪些姓氏比较惊悚呢? 为什么我们要读百家姓呢? 百家姓怎么才能背诵出来呢 背诵《百家姓》有什么意义 提起《百家姓》几乎人人都能背出开头几句,“百家姓”的“百”到底指多少? “黄”姓有没有便于记忆的口诀? 百家姓怎么背 百家姓背诵 赵钱孙李,周吴阵王出自百家姓,我还能接着背下去,背的是什么? 百家姓的口诀怎样念? 想让女儿背下《百家姓》,你知道有哪些好的记忆方式吗? 中国姓氏记忆口诀?简单实用的 百家姓口诀? 百家姓背诵口诀有哪些啊? php与mysql的float类型的精度是分别怎么样的 mysql的float类型默认的问题 道路交通标志牌制作怎么选择反光膜? 道路交通标志牌的反光膜通常都有哪些颜色呢? 高速公路上防护栏的反光标志是多少米一个 道路交通标志牌的反光膜一般有哪些分类呢? 道路交通标志牌在夜晚能够反光的原理是什么? 道路反光标志为什么能向后反射光 道路反光标线 标志反光膜 是不是一个东西 道路标牌还有道路两旁指示标志、分割线是什么材料,为啥晚上反光效果那么好? 道路上交通标志牌能够反光是依靠反光膜吗? 公路标志牌,线,车牌为什么会反光很强? 为什么公路标志牌和车牌在车灯的照射下很亮? 交通标示牌在黑夜中为什么会反光? 高速路夜间有些路段路面反光标识怎么会不停地闪? 为什么现在的交通标志牌广泛应用反光膜呢? iPad键盘居于屏幕中间是为何,怎么解决 有什么和WPS差不多的软件? 电脑除了WPS还有什么软件可以看文档?? 有没有可以取代wps的免费正版的办公软件