mysql float double类型

1.float类型

float列类型默认长度查不到结果,必须指定精度,

比如 num  float,  insert into  table (num) values (0.12); select  * from table where num=0.12的话,empty set。

num float(9,7),  insert into  table (num) values (0.12); select  * from table where num=0.12的话会查到这条记录。

mysql> create table tt

-> (  www.2cto.com

-> num  float(9,3)

-> );

Query OK, 0 rows affected (0.03 sec)

mysql> insert into tt(num)values(1234567.8);

ERROR 1264 (22003): Out of range value for column 'num' at row 1

注:超出字段范围,无法插入

mysql> insert into tt(num)values(123456.8);

Query OK, 1 row affected (0.00 sec)

mysql> select  * from  tt;

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

| num        |

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

| 123456.797 |

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

1 row in set (0.00 sec)

注:小数位数不够,自动补齐,但是存在一个问题就是如上的近似值。

mysql> insert into tt(num)values(123456.867);

Query OK, 1 row affected (0.04 sec)

mysql> select * from   tt;

+------------+  www.2cto.com

| num        |

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

| 123456.797 |

| 123456.797 |

| 123456.867 |

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

3 rows in set (0.00 sec)

mysql> select  * from tt where  num=123456.867;

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

| num        |

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

| 123456.867 |

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

1 row in set (0.00 sec)

mysql> insert into tt(num)values(2.8);

Query OK, 1 row affected (0.04 sec)

mysql> select * from   tt;

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

| num        |

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

| 123456.797 |

| 123456.797 |

| 123456.867 |

|      2.800 |

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

4 rows in set (0.00 sec)

mysql> select  * from tt where  num=2.8;

+-------+  www.2cto.com

| num   |

+-------+

| 2.800 |

+-------+

1 row in set (0.00 sec)

mysql> insert into tt(num)values(2.888888);

Query OK, 1 row affected (0.00 sec)

mysql> select  * from  tt;

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

| num        |

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

| 123456.797 |

| 123456.797 |

| 123456.867 |

|      2.800 |

|      2.889 |

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

5 rows in set (0.00 sec)

注:小数位数超了,自动取近似值。

--------------------------------------------------------------------------------------

2.double类型

mysql> create table tt(

-> num  double(9,3)

-> );

Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt(num) values(234563.9);

Query OK, 1 row affected (0.00 sec)

www.2cto.com

mysql> select * from  tt;

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

| num        |

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

| 234563.900 |

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

1 row in set (0.00 sec)

mysql> insert into tt(num) values(2345623.2);

ERROR 1264 (22003): Out of range value for column 'num' at row 1

mysql> insert into tt(num) values(234563.2);

Query OK, 1 row affected (0.00 sec)

mysql> select  * from  tt;

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

| num        |

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

| 234563.900 |

| 234563.200 |

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

2 rows in set (0.00 sec)

mysql> insert into tt(num) values(2.8);

Query OK, 1 row affected (0.00 sec)

mysql> select  * from tt;

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

| num        |

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

| 234563.900 |

| 234563.200 |

|      2.800 |

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

3 rows in set (0.00 sec)

www.2cto.com

FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。

例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

今天在设计数据表时,突然发现原来FLOAT原来是很不靠谱的,所以在这里建议大家换成DOUBLE类型,

原因是:

在mysql手册中讲到,在MySQL中的所有计算都是使用双精度完成的,使用float(单精度)会有误差,出现意想不到的结果。

在我们查询数据时,MySQL使用64位十进制数值的精度执行DECIMAL操作,float(5.54) = 5.54 如果出现精度丢失,这个是不等的。这样,本来我们应该能查到的数据就会莫名其妙的消失。

mysql小数类型字段_mysql小数类型字段,float,double相关推荐

  1. mysql int 正数 范围_mysql中整数字段不同类型的取值范围

    mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,整数(int)字段类型分有符号和无符号两种(UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含 ...

  2. mysql字段类型原理_mysql数据类型和字段属性原理与用法详解

    本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...

  3. mysql set字段_MySQL的SET字段类型

    SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值.指定包括多个SET成员的SET列值时各成员之间用逗号(',')间隔开.这样SET成员值本身不能包含逗号. 例如,指定为SE ...

  4. mysql set类型使用_MySQL的SET字段类型使用方法

    MySQL的SET字段类型使用方法 SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值.指定包括多个SET成员的SET列值时各成员之间用逗号(',')间隔开.这样SET成员值 ...

  5. mysql有numeric类型吗_mysql数值类型 - numeric

    本文介绍php出现Warning: A non-numeric value encountered问题,用实例分析出现这种错误的原因,并提供避免及解决问题的方法. <?phperror_repo ...

  6. mysql自增字段_MySQL自增字段的常用语句

    学习MySQL数据库,MySQL自增字段是最基础的部分之一,下面为您介绍一些MySQL自增字段的常用语句,希望对您学习MySQL自增字段能些许帮助. 1.创建表格时添加: create table t ...

  7. mysql 怎么改属性_mysql怎么修改字段的属性

    在项目开发中,发现表的某些字段不合理,需要修改怎么处理呢.这时候需要用到关键字alter来修改字段的属性 在mysql中alter命令可以修改字段类型,长度,名称或一些其它的参数,下面我来给大家介绍a ...

  8. mysql如何加个字段_mysql如何添加字段 | mysql添加字段

    alter table `sysinfo` add `fact_num` int(11); 添加字段并设置默认值: alter table `channel` add `needrestart` in ...

  9. mysql多select合并_mysql 多个字段合并

    group_concat 函数 默认","合并 select p.id as patent_id,p.application_no,p.name,p.inventer,group_ ...

最新文章

  1. VBA:指定なフォルダしたのすべてのファイル名
  2. 成功解决AttributeError: ‘int‘ object has no attribute ‘encode‘
  3. Effective 笔记
  4. python函数代码_如何显示Python函数的代码?
  5. php导入json文件_[php]导入超大json文件
  6. 史无前例,阿里云或将空降 M7 级高管
  7. Blazor 状态管理
  8. 如何运行网页html,如何在网页中运行html代码
  9. 向来只用联发科、三星处理器的魅族,怎么就被高通控告了?
  10. Eclipse 格式化代码且不影响注释
  11. Unity LOGO流光效果
  12. 【GD32F407】 读写内部flash函数
  13. ai语音系统智能AI机器人AI源码营销机器人电销机器人智能电话机器人拨号机器人语音机器人空号识别科大识别阿里识别语音识别语音翻译FreeSWITCH呼叫中心中间ipbxIPBX
  14. 【时间之外】面向监狱的编程?该学学网络安全法了(1)
  15. javascript里裁切图片插件库
  16. TCP拥塞控制和宽容
  17. 面试被问到如何设计微信钉钉后端高并发IM架构?懵了.....
  18. 《微软云计算Windows Azure开发与部署权威指南》——6.8 AppFabric服务总线的多播服务开发...
  19. 专业卡与游戏卡的区别
  20. java封装入参_Spring Gateway自定义请求参数封装的实现示例

热门文章

  1. 2022重庆自考本科怎么考?
  2. Windows下不用敲一行命令使用webstorm将代码上传至Gitlab已经存在的库
  3. linux系统及shell常用命令
  4. 环洋调研报告-2021年全球主动降噪型耳机行业调研及趋势分析报告
  5. 【秋招纪实录】我是如何从大一不断提高自身的【求职/考研】能力
  6. 实例数据表明Web Server领域Apche的绝对优势
  7. Python处理数据匹配问题
  8. 国际象棋通用协议(UCI协议)
  9. 为什么示波器阻抗一般是1M欧或者50欧
  10. Kinit :Client ‘‘ not found in Kerberos database while getting initial credentials