MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型。

其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。

float,double类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理。这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12。

幸好mysql提供了两个数据类型:decimal,这种数据类型可以轻松解决上面的问题:decimal类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。

数据定义

float(M,S) M为全长,S为小数点后长度。对于不精准的例子,网络上很多,Copy如下:

mysql> create table t1(c1 float(10,2), c3decimal(10,2));

Query OK, 0 rows affected (0.02 sec)

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

Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;

+----------------+-----------------+

| c1 | c3 |

+----------------+-----------------+

| 9876543.00 | 9876543.12 |

+----------------+------------------+

2 rows in set (0.00 sec)

再举例: DECIMAL(5,2)

mysql> create table t1(id1 float(5,2) default null,id2 double(5,2) default null,

id3 decimal(5,2) default null );

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

Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> show warnings;

+-------+------+------------------------------------------+

| Level | Code | Message |

+-------+------+------------------------------------------+

| Note | 1265 | Data truncated for column 'id3' at row 1 |

+-------+------+------------------------------------------+

1 row in set (0.00 sec)

1.2345 --- 小数点后最多2位,所以保存可以,自动四舍五入数据截断,但会报waning

12.34 --- OK

1234.5 --- 因为小数部分未满2位,要补0.所以保存应该1234.50。所以整个位数超出了5,保存报错。

1.2 --- 小数未满部分补0。按照1.20保存。

默认状态比较

浮点数如果不写经度和标度,会按照实际精度值保存,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0) 来操作,如果数据超过了精度和标度值,系统会报错。

以上这篇MySQL中Decimal类型和Float Double的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)相关推荐

  1. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?

    出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...

  2. python定义数组并赋值_python中的数组赋值与拷贝的区别详解

    具体的注解我已经写在了程序里面:通俗的解释了python里面的浅拷贝与深拷贝的不同,请看程序. # -*- coding: utf-8 -*- import numpy as np import co ...

  3. mysql isnull()_MySql中的IFNULL、NULLIF和ISNULL用法详解

    今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下: mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法: 如e ...

  4. decimal类型对象里面定义什么类型_奥斯塔罗 单身开启桃花雷达 现阶段的我适合什么类型的对象?...

    相信单身朋友 总好奇下一位对象是否出现了? 或是这么多人 我该如何察觉下一位对象呢? 如果单身的你正寻找对象中 那就跟奥斯老师一起来看看 下一位对象的个性与特征吧! <<直觉选一张牌> ...

  5. 数据库查询字段类型为double类型和float类型时遇到的坑

    对于小数型的字段,我们常用double类型和float类型,但是这两种类型使用的时候有很大差别,下面我们来看一下 在设计数据表时,突然发现原来FLOAT原来是很不靠谱的,所以在这里建议大家换成DOUB ...

  6. oracle的int范围,oracle中int类型和number类型区别

    oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...

  7. U盘的FAT32/NTFS/exFAT文件系统类型区别详解

    U盘的FAT32/NTFS/exFAT文件系统类型区别详解 U盘相信大家非常熟悉了,用户在格式化U盘的时候可以选择文件系统:FAT32/NTFS/exFAT,那么这三个文件系统又有什么区别呢?下面我们 ...

  8. php为什么需要配置路由器,laravel 配置路由 api和web定义的路由的区别详解

    1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...

  9. C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中

    C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中 测试2:证明派生类的虚函数的地址跟第一基类的虚函数地址保存在同一张虚函数表中. 派生类有多少个拥有虚函数的基类,派生类对象就有多少 ...

最新文章

  1. 华为公布车联网进展:年内将覆盖10万网联车
  2. Tensorflow【实战Google深度学习框架】使用 TFLearn 实现逻辑运算符
  3. Unity--------------------万向锁的概念
  4. tableau必知必会之学做漂亮易用的哑铃图
  5. CSDN:借助工具对【本博客访问来源】进行数据图表可视化(网友主要来自美国、新加坡、日本、英德加澳等)——记录数据来源截止日期20200718晚上22点
  6. hdu1006 Tick and TIck
  7. JavaScript入门(part9)--函数
  8. javaScript第二天(2)
  9. 【iVX 初级工程师培训教程 10篇文拿证】09 聊天室制作
  10. Python入门教学之(标识符和保留字)
  11. Kafka:常用命令
  12. Qt工作笔记-使用信号与槽让两个界面进行数据通信
  13. 购买域名以及申请证书
  14. 三、函数的嵌套、作用域链、函数名的应用、闭包。
  15. fedora15下GNOME3使用笔记
  16. 华为服务器通过ilo虚拟光驱,如何通过ilo开启服务器远程桌面
  17. 软件测试最牛的8本书籍—你有读过吗?
  18. mysql PTA题解查询平均成绩最高的前三名同学
  19. 软件工程实践者的思想
  20. MCU基础以及RTOS原理知识分享

热门文章

  1. ComboBox隐藏三角符号
  2. Altium designer入门教程:新建一个项目
  3. linux桌面主题包安装,Linux桌面主题GNOME安装实例
  4. 最新25G SFP28系列光模块全解析
  5. 详解 JavaScript 中的异步与线程
  6. JXTA 点对点管道通信
  7. 转自coolshell--vim的基本操作
  8. ZZNU-OJ-2119 : 告辞,【卡特兰数列,组合数学】
  9. PCB评审及检查规范
  10. 将服务器文件导入docker,将本地docker容器迁移到服务端