mysql中decimal与float_MySQL中的float和decimal类型有什么区别
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个字节。
mysql中decimal与float_MySQL中的float和decimal类型有什么区别相关推荐
- mysql的text与tinytext,MySQL中的VARCHAR(255)和TINYTEXT字符串类型有什么区别?
What's the difference between VARCHAR(255) and TINYTEXT string types in MySQL? Each of them allows t ...
- mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...
- 关于MYSQL中FLOAT和DOUBLE类型的存储
关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方式和C/C++一致准守IEEE标准他们都是浮点型的,所谓的浮点型,是小数点的位置可变,其能够表示的范围比定 ...
- mysql decimal 实现_mysql中decimal的使用
float,double,decimal区别 创建表test_float_double_decimal CREATE TABLE `test_float_double_decimal` ( `id` ...
- MySQL 数据类型讲解 和Java中所对应的数据类型讲解
MySQL 数据类型讲解 和Java中所对应的数据类型讲解 Mysql数据类型分类 在Mysql中常用数据类型一共有四种字符串数据类型.日期/时间数据类型.数值数据类型以及二进制数据类型. 一.字符串 ...
- sqlite mysql pgsql_比较MySQL,PostgreSQL和SQLite中的数据库列类型?(跨图)
小编典典 我会做不同的事情清单: MySQL中的MEDIUMINT是一个奇怪的鸭子(3个字节).我会避免它,但否则也将其映射到INTEGER. MySQL BOOLEAN(别名BOOL,别名TINYI ...
- mysql 空位补0_MySQL-13(表的创建、数值类型整型、float/decimal、ZEROFILL、BIT(M))
# 1. 表的创建 基本语法: CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype )ch ...
- 谈谈MySQL如何选择float, double, decimal
前言 我们知道在MySQL中有3种类型可以表示实数,分别是float,double和decimal.关于如何合理得使用这三种类型,网上的答案也层出不穷.但是究竟该选择哪一种类型,好像并没有统一的答案, ...
- mysql存储函数声明float_mysql存储float
Mysql中,int(10)和int(11)的区别 int(M) M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关 首先说一下mysql的数值类型,MySQL支 ...
最新文章
- HDU 3555 Bomb
- django 1.8 官方文档翻译:2-1-1 模型语法
- 插件架构的原理及实现探讨
- python安装后无法打开文本_Python 安装zbar-py时出现 无法打开包括文件: “unistd.h” no such file or directory...
- Vim vimrc配置
- linux静态与动态库创建及使用实例
- NPAPI确实不安全,因为功能太强大
- Charles安装破解和基础配置
- No plugin found for prefix 'mybatis-generator' in the current project ORA-28040: No matching authen
- Python 鞭炮题
- 特殊符号 mysql_mysql 特殊字符
- 单模光纤和多模光纤区别
- 使用esp8266前的网络基础
- 自恢复保险丝在汽车电子中的防护应用
- 题解-[Usaco2005 Mar]Out of Hay 干草危机
- 2016 中兴签约经验
- 089day(JAVA变量输入输出,类型转换,运算符的练习和概念的内涵和外延)
- 微信小程序图片的比例问题
- eclipse远程调试Java程序
- 解决md文件中本地图片链接失效的方法