可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理。这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12.
幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上面的问题:
NUMERIC 和 DECIMAL 类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例 如:salary DECIMAL(5,2)在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -99.99 到 99.99。(实际上 MySQL 在这个列中可以存储的数值可以一直到 999.99,因为它没有存储正数的符号)。译者注:M 与D 对DECIMAL(M, D) 取值范围的影响类型说明 取值范围(MySQL < 3.23) 取值范围(MySQL >= 3.23)
=================================================
 
float,decimal精确度比较

float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,

用于定义货币要求精确度高的数据。在数据迁移中,float(M,D)是非标准定义,最好不要这样使用。M为精度,D为标度。

mysql>  create table t1(c1 float(10,2), c2 decimal(10,2),c3 float); // 10不包括小数点

mysql>  insert into t1 values(1234567.23, 1234567.23,1234567.23); mysql>  select * from t1;

数据显示与所用的客户端工具有关

1.在Toad for MySQL中的显示为

c1                    c2                            c3

1234567    1234567.23        1234570

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

1234567.25    1234567.23        1.23457e+006

3.程序中取出数据

1234567          1234567.23        1234570

mysql> insert into t1 values(9876543.21, 9876543.12,9876543.21);

1.在Toad for MySQL中的显示为

c1                    c2                            c3

9876543       9876543.12            9876540

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

9876543.00   9876543.12        9.87654e+006

3.程序中取出数据

9876543         9876543.12        9876540

mysql>  insert into t1 values(1.21, 1.12,1.21);

1.在Toad for MySQL中的显示为

c1                    c2                            c3

1.21                1.12                       1.21

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

1.21               1.12                         1.21

3.程序中取出数据

1.21                1.12                        1.21

mysql>  insert into t1 values(1.2, 1.2,1.2);

1.在Toad for MySQL中的显示为

c1                    c2                            c3

1.2                  1.20                        1.2

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

1.20                1.20                         1.2

3.程序中取出数据

1.2                   1.20                        1.2

mysql>  insert into t1 values(9876543.216, 9876543.126,9876543.216);

1.在Toad for MySQL中的显示为

c1                    c2                            c3

9876543        9876543.13           9876540

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

9876543.00   9876543.13          9.87654e+006

3.程序中取出数据

9876543         9876543.13          9876540

mysql>  insert into t1 values(1.216, 1.126,1.216);

1.在Toad for MySQL中的显示为

c1                    c2                            c3

1.22                1.13                        1.216

2.在MySQL Query Browser中的显示为

c1                    c2                            c3

1.22               1.13                        1.216

3.程序中取出数据

1.22               1.13                        1.216

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

decimal默认为decimal(10,0)

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

精度中,符号不算在内:

mysql> insert into t1 values(-98765430.21, -98765430.12); mysql> select * from t1;

c1                              c2          -98765432.00        -98765430.12

mysql decimal相关推荐

  1. mysql decimal

    mysql decimal 本篇讨论mysql decimal数据类型特征 分别从以下3个方面进行介绍: 1.最大位数 2.存储格式 3.存储要求 参考值:decimal(M, D) 1.最大位数 ( ...

  2. mysql Decimal 运算;

    MySQL DECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...

  3. mysql decimal 类型_MySQL数据类型DECIMAL用法详解

    MySQLDECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...

  4. mysql decimal类型排序

    mysql decimal类型排序 decimal类型是按照字典序排序! decimal类型是按照字典序排序!

  5. mysql decimal(10,2)对应java类型

    下面我给出MYSQL类型与JAVA类型对应表,希望能够帮到您: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.S ...

  6. mysql Decimal(M,D)解释

    http://database.51cto.com/art/201005/201651.htm float占4个字节,double占8个字节,decimail(M,D)占M+2个字节. MySQL数据 ...

  7. mysql decimal型转化为float_5分钟搞懂MySQL数据类型之数值型DECIMAL类型

    速成指南 5分钟搞懂MySQL数据类型 之数值型--DECIMAL类型 DECIMAL类型的语法:DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL].其中M指定的是数字的总位 ...

  8. mysql int number_Oracle/MySQL decimal/int/number 转字符串

    有时客户需要流水数据,当导出为excel的时候,客户编号等很长数字的栏位,被excel变成科学记数法,无法正常查看. 因此,需要将Oracle/MySQL中的decimal/int 转 varchar ...

  9. python查询mysql decimal报错_python读取MySQL数据表时,使用ast模块转换decimal格式数据的坑...

    概述 MySQL中常用的数据格式有tinyint().int().float().double().decimal() .varchar.enum().datetime;小数格式中decimal比较常 ...

  10. mysql decimal 比较大小_10 分钟掌握 MySQL 的索引查询优化技巧

    本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考.以下内容以MySQL5.5为准,如无特殊说明,存储引擎以InnoDB为准. MySQL的特点 了解MySQL的特点有助于更好的使 ...

最新文章

  1. On-Heap与Off-Heap
  2. java bean spring_Java+Spring+Bean+注入方式
  3. element-UI中手动调用table排序
  4. linux路由内核实现分析(二)---FIB相关数据结构(4)
  5. python如何获取百度搜索结果的真实URL
  6. Nginx的accept_mutex配置
  7. highcharts插件使用总结和开发中遇到的问题及解决办法
  8. Pascal调用与C调用
  9. 抽象代数学习笔记四《群:子群、同构、同态》
  10. Linux系统连接以太网与WIFI的方法
  11. Head First Python
  12. c语言写流水灯程序,用汇编和C语言 写流水灯程序
  13. html图片旁边加文字
  14. mysql生日提醒_生日提醒为我所有的用户mysql
  15. css实现3d正方体旋转
  16. 快速重命名文件夹,教你怎样在每个文件夹名中添加符号
  17. 在不同领域,大家用爬虫怎么盈利的-Java网络爬虫系统性学习与实战系列(4)
  18. W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)
  19. BT5在虚拟机下无法上网
  20. 金融反作弊中的设备指纹

热门文章

  1. 三件事看优酷关于视频网站版权的问题
  2. Ogre天龙八部地形mesh部分的C++源码
  3. 人类历史上第一个推荐系统
  4. Kafka中的HW、LEO、LSO等分别代表什么?
  5. 【基于C++面向WindowAPI的自制工具】随机数按位生成器
  6. 基于JSP的智能道路交通信息管理系统
  7. 阿里云服务器安装mysql数据库教程
  8. Topic Modeling of Short Texts: A Pseudo-Document View
  9. Edge浏览器打开新建标签页速度很慢?如何解决?
  10. 在大学时的分布式数据库读书笔记 拿出来分享