共计 1817 个字符,预计需要花费 5 分钟才能阅读完成。
本篇文章给大家分享的是有关 MySQL 中 float 和 decimal 类型的作用是什么,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。
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 个字节。
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 列做 或 的比较。
以上就是 MySQL 中 float 和 decimal 类型的作用是什么,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。