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类型有什么区别相关推荐

  1. 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 ...

  2. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区

    关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...

  3. 关于MYSQL中FLOAT和DOUBLE类型的存储

    关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方式和C/C++一致准守IEEE标准他们都是浮点型的,所谓的浮点型,是小数点的位置可变,其能够表示的范围比定 ...

  4. mysql decimal 实现_mysql中decimal的使用

    float,double,decimal区别 创建表test_float_double_decimal CREATE TABLE `test_float_double_decimal` ( `id` ...

  5. MySQL 数据类型讲解 和Java中所对应的数据类型讲解

    MySQL 数据类型讲解 和Java中所对应的数据类型讲解 Mysql数据类型分类 在Mysql中常用数据类型一共有四种字符串数据类型.日期/时间数据类型.数值数据类型以及二进制数据类型. 一.字符串 ...

  6. sqlite mysql pgsql_比较MySQL,PostgreSQL和SQLite中的数据库列类型?(跨图)

    小编典典 我会做不同的事情清单: MySQL中的MEDIUMINT是一个奇怪的鸭子(3个字节).我会避免它,但否则也将其映射到INTEGER. MySQL BOOLEAN(别名BOOL,别名TINYI ...

  7. mysql 空位补0_MySQL-13(表的创建、数值类型整型、float/decimal、ZEROFILL、BIT(M))

    #    1. 表的创建 基本语法: CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype )ch ...

  8. 谈谈MySQL如何选择float, double, decimal

    前言 我们知道在MySQL中有3种类型可以表示实数,分别是float,double和decimal.关于如何合理得使用这三种类型,网上的答案也层出不穷.但是究竟该选择哪一种类型,好像并没有统一的答案, ...

  9. mysql存储函数声明float_mysql存储float

    Mysql中,int(10)和int(11)的区别 int(M) M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关 首先说一下mysql的数值类型,MySQL支 ...

最新文章

  1. HDU 3555 Bomb
  2. django 1.8 官方文档翻译:2-1-1 模型语法
  3. 插件架构的原理及实现探讨
  4. python安装后无法打开文本_Python 安装zbar-py时出现 无法打开包括文件: “unistd.h” no such file or directory...
  5. Vim vimrc配置
  6. linux静态与动态库创建及使用实例
  7. NPAPI确实不安全,因为功能太强大
  8. Charles安装破解和基础配置
  9. No plugin found for prefix 'mybatis-generator' in the current project ORA-28040: No matching authen
  10. Python 鞭炮题
  11. 特殊符号 mysql_mysql 特殊字符
  12. 单模光纤和多模光纤区别
  13. 使用esp8266前的网络基础
  14. 自恢复保险丝在汽车电子中的防护应用
  15. 题解-[Usaco2005 Mar]Out of Hay 干草危机
  16. 2016 中兴签约经验
  17. 089day(JAVA变量输入输出,类型转换,运算符的练习和概念的内涵和外延)
  18. 微信小程序图片的比例问题
  19. eclipse远程调试Java程序
  20. 解决md文件中本地图片链接失效的方法

热门文章

  1. 侧链,驱动链,和根链的双向锚定设计
  2. 双喜临门,压力测试、曼谷会议,BCH成绩斐然
  3. TextView及其子类
  4. php或js判断网站访问者来自手机或者pc端源码
  5. base64 数据处理
  6. Spread for Windows Forms高级主题(7)---自定义打印的外观
  7. 【总结】IE和Firefox的Javascript兼容性总结
  8. ArrayList和LinkedList区别
  9. 关于 MySQL LEFT JOIN 你可能需要了解的三点
  10. Centos 6.8安装Python3.7