精华内容
下载资源
问答
  • mysql 中浮点定点型记录为了能够引起大家的重视,在介绍浮点数与定点数以前先让大家看一个例子:mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2));Query OK, 0 rows affected (0.22 sec)mysql>...

    mysql 中浮点型与定点型记录

    为了能够引起大家的重视,在介绍浮点数与定点数以前先让大家看一个例子:

    mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2));

    Query OK, 0 rows affected (0.22 sec)

    mysql> insert into test values(131072.32,131072.32);

    Query OK, 1 row affected (0.02 sec)

    mysql> insert into test values (999998.02, 999998.02);

    Query OK, 1 row affected (0.02 sec)

    mysql> select * from test;

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

    | c1 | c2 |

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

    | 131072.31 | 131072.32 |

    | 999998.00 | 999998.02 |

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

    1 row in set (0.00 sec)

    从上面的例子中我们看到c1列的值由131072.32变成了131072.31;999998.02变成了999998.00,这就是浮点数的不精确性造成的。

    在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数。

    浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。

    在今后关于浮点数和定点数的应用中,大家要记住以下几点:

    1、浮点数存在误差问题;

    2、对货币等对精度敏感的数据,应该用定点数表示或存储;

    3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;

    4、要注意浮点数中一些特殊值的处理。

    资料来源:电子资料

    展开全文
  • MySQL浮点定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则...

    MySQL浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

    创建下表:
    mysql> CREATE TABLE t2(id1 FLOAT(5,2) DEFAULT NULL,id2 DOUBLE(5,2) DEFAULT NULL,id3 DECIMAL(5,2) DEFAULT NULL);

    mysql> DESC t2;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | id1   | float(5,2)   | YES  |     | NULL    |       |
    | id2   | double(5,2)  | YES  |     | NULL    |       |
    | id3   | decimal(5,2) | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+

    往id1,id2,id3这三个字段中插入数据1.23:

    mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.23,1.23,1.23);

    mysql> SELECT * FROM t2;
    +------+------+------+
    | id1  | id2  | id3  |
    +------+------+------+
    | 1.23 | 1.23 | 1.23 |
    +------+------+------+

     

    数据都正确插入,再向id1插入1.234,id2插入1.234,id3仍然插入1.23:
    mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.23);

    mysql> SELECT * FROM t2;
    +------+------+------+
    | id1  | id2  | id3  |
    +------+------+------+
    | 1.23 | 1.23 | 1.23 |
    | 1.23 | 1.23 | 1.23 |
    +------+------+------+

    数据全部正确插入,但是id1和id2由于标度的限制,舍去了最后一位。

    同时向id1,id2,id3中插入数据1.234:

    mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.234);
    Query OK, 1 row affected, 1 warning (0.02 sec)
    mysql> SELECT * FROM t2;
    +------+------+------+
    | id1  | id2  | id3  |
    +------+------+------+
    | 1.23 | 1.23 | 1.23 |
    | 1.23 | 1.23 | 1.23 |
    | 1.23 | 1.23 | 1.23 |
    +------+------+------+
    3 rows in set (0.00 sec)

    数据也插入成功,但是有一个错误提示,

    mysql> SHOW warnings;
    +-------+------+------------------------------------------+
    | Level | Code | Message                                  |
    +-------+------+------------------------------------------+
    | Note  | 1265 | Data truncated for column 'id3' at row 1 |
    +-------+------+------------------------------------------+
    1 row in set (0.00 sec)

     

    将id1,id2,id3的精度和标度都去掉,再插入数据1.234:

    mysql> ALTER TABLE t2 MODIFY id1 FLOAT;
    Query OK, 0 rows affected (0.14 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    mysql> ALTER TABLE t2 MODIFY id2 DOUBLE;
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    mysql> ALTER TABLE t2 MODIFY id3 DECIMAL;
    Query OK, 4 rows affected, 4 warnings (0.06 sec)
    Records: 4  Duplicates: 0  Warnings: 4

     

    mysql> DESC t2;
    +-------+---------------+------+-----+---------+-------+
    | Field | Type          | Null | Key | Default | Extra |
    +-------+---------------+------+-----+---------+-------+
    | id1   | float         | YES  |     | NULL    |       |
    | id2   | double        | YES  |     | NULL    |       |
    | id3   | decimal(10,0) | YES  |     | NULL    |       |
    +-------+---------------+------+-----+---------+-------+

     

    mysql> INSERT INTO t2(id1,id2,id3) VALUES(1.234,1.234,1.234);
    Query OK, 1 row affected, 1 warning (0.00 sec)

     

    mysql> SHOW WARNINGS;
    +-------+------+------------------------------------------+
    | Level | Code | Message                                  |
    +-------+------+------------------------------------------+
    | Note  | 1265 | Data truncated for column 'id3' at row 1 |
    +-------+------+------------------------------------------+
    1 row in set (0.00 sec)

     

    mysql> SELECT * FROM t2;
    +-------+-------+------+
    | id1   | id2   | id3  |
    +-------+-------+------+
    | 1.234 | 1.234 |    1 |
    +-------+-------+------+
    1 row in set (0.00 sec)

     

    id1和id2的数据正确插入,而id3被截断。

     

    浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会报错。

     

     

     

     

    展开全文
  • 定点型特点就是小数点固定,不会丢失精度。浮点又分float和double,float占用4个字节存储数据,精度范围大概为7位左右;double占用8个字节存储数据,精确范围大概为15位左右。 浮点 创建浮点数表:直接float...

           什么是小数型呢?字面意思就是带小数点的数值型。在mysql中,小数又细分为浮点型和定点型。浮点型的特点是小数点浮动,有精度丢失;定点型特点就是小数点固定,不会丢失精度。浮点型又分float和double,float占用4个字节存储数据,精度范围大概为7位左右;double占用8个字节存储数据,精确范围大概为15位左右。

    浮点型

    创建浮点数表:直接float表示没有小数部分;float(M,D) 其中M表示总长度,D表示小数部分长度,所以整数部分长度为M-D;

    举例:


    查看创建好的浮点型表,然后插入数据。


    插入数据可以直接写小数,也可以用科学技术法表示。


    查看数据表数据效果

     

    举例一个精度丢失的问题,就是四舍五入的场景。


           上面显示,我们明明插入的是10个9,但是数据库存储进去之后就显示10000000000,发现进位,这种四舍五入的情况在数据库中是运行存在的,所以浮点型是有精度丢失,如果业务数据不能丢失精度,那么就不可以采用这个浮点型,例如银行存储用户的余额就不应该采用浮点型。


    定点型

    定点型是绝对保证整数部分精度不丢失,小数部分理论上也不会丢失精度。

    创建一个定点型表


    插入数据,定点型和float浮点型进行对比。

     

    小数部分超出会报警告。证明一下定点型不会丢失进度,一下根本就不会发生进位的情况。


     

    展开全文
  • float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点,而decimal是定点型; MySQL 浮点定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D...

    float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

    MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。

    CREATE TABLE test(f FLOAT(5,2) DEFAULT NULL,d DOUBLE(5,2) DEFAULT NULL,de DECIMAL(5,2) DEFAULT NULL);
    

    FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

    浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会警告!
    将精度和标度都去掉:

    ALTER TABLE test MODIFY f FLOAT;
    ALTER TABLE test MODIFY d DOUBLE;
    ALTER TABLE test MODIFY de DECIMAL;
    

    在这里插入图片描述

    INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.234);
    

    在这里插入图片描述
    同时,对数据求SUM()时会出现不同的结果,float和double求SUM都会出现很多小数点,而decimal求SUM得到的是精准数值:

    SELECT SUM(f),SUM(d),SUM(de) FROM test;
    

    在这里插入图片描述
    理论上SUM(f)=3.698,SUM(d)=2.474,SUM(de)=3.46,但f,d都出现后面很长的一串浮点小数点。

    展开全文
  • 商品价格存储采用decimal定点型,其精度比单精度的float和双精度的都高,如果实际插入数据的精度大于定义的精度,系统将会自动的进行四舍五入,使其精度达到要求
  • 1、对于不需要任何准确计算精度的数字可以直接使用浮点,但是如果需要精确计算的结果,则必须使用定点型(BigDecimal类) 浮点:float,double 定点型:BigDecimal 2、BigDecimal是Java中用来表示任意精确...
  • 以下是官网截图(Chrome浏览器翻译了中文),具体看官方参考文档 以上截图就是参考文档1 以上截图就是参考文档3 官方参考官方文档: 1、...
  • 定点型 DEC (M, D) DECIMAL (M, D) 特点: M和D M: 整数部位+小数部位 的长度 D: 小数部位 的长度 如果超过范围,则插入临界值 M和D都可以省略 如果是 DECIMAL ,则M默认为10,D默认为0 如果是 FLOAT 和 ...
  • Mysql 浮点定点型

    2017-02-18 00:34:00
    定点型:decimal(M,D) --相对float 更精确 M:精度(总位数,不包含小数点) D:标度(小数位) create table goods( name varchar(10) not null default '', price1 float(9,2) not null default 0.00, price2...
  • 为了能够引起大家的重视,在介绍浮点数与定点数以前先让大家看一个例子: mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2)); Query OK, 0 rows affected (0.22 sec) mysql> insert into ...
  • 1、数值总结 整型 特点 1.根据所占字节或保存的数值范围分类 tinyint、smallint、mediumint、int/integer、bigint 2.默认为有符号整型 3.如果超过类型的范围,会报警告,插入临界值(最大值或最小值) 4.如果想...
  • float(m,d) 4字节 单精度浮点,8位精度,m是十进制数字的总个数,d是小数点后面的数字个数 double(m,d) 8字节 双精度浮点,16位精度 float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入...
  • * 以下所有函数都是对定点型的运算,该定点型的值乘以10000再以整型来存储。 */ /** * 将real转化为int,得到其整数部分。 */ __declspec(naked) int __fastcall r_int(real i) { _asm{ mov edx,ecx; ...
  • decimal是定点类型 3.整型 与C语言整型差不多 unsigned zerofill bool是tinyint(1)的别名 tinyint[M] [unsigned] [zerofill] 这里的M表示显式宽度 测试:宽度不足4位,前导用0来填充 08:47 ...
  • 一、mysql的数据类型主要有三大类 字符串类型还有varchar和char类型。...区别:浮点数和定点数的区别是:浮点数有受所占空间字节限制,只能表示空间内能表示的最大值,定点数表示的范围很大。
  • #include<iostream> #include<Windows.h> using namespace std; int main(void){ ...//可以修改输出的精度 ...//取消定点法 cout<<3.1415926535<<endl; system("pause"); }
  • 定点

    千次阅读 2017-01-16 11:08:38
    Simulink是有定点化工具(fixed-point tool),没有用过,因为我想生成一个不带有浮点数的代码的话只要把所有的数据类型定义为非浮点的形式就好了。 首先 要做的是找到模型中的浮点数(当然如果建模的时候没有对...
  • 估计scope的显示没这么高的精度,所以,就看不到…… 你仿真1s的时候,scope看到的是直线,是它显示的问题,真实的数据是有的,你用“to workspace”模块,双击它把采样时间设成“0.0001”(比你在time values 里设的...
  • 定点数和浮点数

    千次阅读 2018-01-26 15:23:56
     根据小数点的位置是否固定,可以分为定点表示和浮点表示。定点数和浮点数代表了数值的两种不同表示格式,由原码或补码构成。  定点数:  用来表示整数和纯小数,其小数点位置固定,并且隐藏起来,一个定点...
  • 问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么?  new Float(55442.345),输出...双精度型,有效位为十六位)   现在我们就详细剖析一下浮点型运算为什么会造成精度丢失?   1、小数的二进制
  • 详细剖析浮点运算的精度丢失

    千次阅读 2016-09-03 18:56:29
    现在我们就详细剖析一下浮点运算为什么会造成精度丢失?   1、小数的二进制表示问题  首先我们要搞清楚下面两个问题:  (1) 十进制整数如何转化为二进制数  算法很简单。举个例子,11表示成二...
  • 浮点数和定点数的相互转换(浮点数量化为定点

    万次阅读 多人点赞 2018-09-29 12:40:07
    目录这篇博客将要讨论什么?...定点定点数-&amp;amp;gt;浮点数 这篇博客将要讨论什么? 浮点数的表示法 定点数的表示法 浮点数-&amp;amp;gt;定点定点数-&amp;amp;gt;浮点数 ...
  • 它是用来表示实数的一种方法,它用 M(尾数) * B( 基数)的E(指数)次方来表示实数,相对于定点数来说,在长度一定的情况下,具有表示数据范围大的特点。但同时也存在误差问题,这就是著名的浮点数精度问题! 浮点数...
  • Matlab定点

    万次阅读 2018-03-08 16:39:13
    当要对于算法的硬件实现,使用Matlab进行定点化仿真非常重要,网上Matlab定点化仿真的资料比较少,下面是我总结的资料。Matlab定点化三种方法:1.使用round、floor等函数在每次运算后直接进行截断各种截断方法:ceil...
  • 尺寸大于4的超保形场论(SCFT)已成为对量子... 我们在SCFT的规范理论变形中获得了分配函数和中心电荷,并将结果外推到共形固定点。 在适当的大N限制下,这与AdS / CFT预测精确匹配,为建议的对偶性提供了有力的支持。
  • 比如:宇宙星体数量 double双精度浮点 习题用8个字节来存储数据,表示的范围更大,大概10^308次方,但是精度只有15位, 基本语法:与float一致, 定点型 定点数:数据精度的小数(小数部分可能不精确,超出精度会四...
  • 定点与浮点的转换

    2018-09-10 13:40:53
    定点与浮点转换方法,通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数。数的定标有Q表示法和S表示法两种。
  • 浮点数的定点

    万次阅读 2016-10-02 20:07:24
    FPGA(一般只能处理定点数):浮点数的定点化浮点数例子 : 2.918 12.918 3.1415926转成定点数要定义小数需求多少位,整数需求多少位例:16位的定点数(MAX:16’d32767 MIN:-32768) 3位整数位宽,12位的小数位,最高位的符号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,803
精华内容 4,721
关键字:

定点精度型