数据库-列的类型-浮点数,定点数-数据类型

news/2025/1/24 19:36:01/
类型占用空间负数取值范围正数取值范围
FLOAT4 字节-3.4 x 10^383.4 x 10^38
DOUBLE8 字节-1.8 x 10^3081.8 x 10^308
DECIMAL(M,d)M+2-1.8 x 10^3081.8 x 10^308

M表示数字的总位数,而d表示小数点后的位数
d不能大于m;

创建表 不指定精度

# 创建表 
create table FloatTypes(F1 float,d1 double, de decimal);
# 插入整数部分1位,小数部分的21位
insert into floatTypes values(1.1111111111111111111111,1.111111111111111111111,1.1111111111111111111);
select *from floattypes;
/*
+---------+--------------------+------+
| F1      | d1                 | de   |
+---------+--------------------+------+
| 1.11111 | 1.1111111111111112 |    1 |
+---------+--------------------+------+
f1 保存不了21位小数部分因为空间限制 float 4个字节  保存5位
d1 保存不了21位小数部分 8个字节  保存16位
de 好像更加严重 只显示整数部分 这..... 
这要是换成 金钱 得损失 .... 那怎么办呢  其实 可以指定精度 只对于 decimal 开放  对于 float 和 double 而言 不需要 指定精度 
当然硬要指定精度 但float 和double  说:我是演员
*/

创建表 指定精度和标度

#浮点类型带精度和标度 
create table  floatTypesWithPrecAndScale(F1 float(22,21),d1 double(22,21), de decimal(22,21));#创建floatTypesWithPrecAndScale时候 有两个警告
#查看警告
show warnings;
/*
+---------+------+------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                          |
+---------+------+------------------------------------------------------------------------------------------------------------------+
| Warning | 1681 | Specifying number of digits for floating point data types is deprecated and will be removed in a future release. |
| Warning | 1681 | Specifying number of digits for floating point data types is deprecated and will be removed in a future release. |
+---------+------+------------------------------------------------------------------------------------------------------------------++---------+------+------------------------------------------------------------------------------------------------------------------+
|等级|代码|消息|
+---------+------+------------------------------------------------------------------------------------------------------------------+
|警告| 1681 |指定浮点数据类型的位数已弃用,并将在未来版本中删除。|
|警告| 1681 |指定浮点数据类型的位数已弃用,并将在未来版本中删除。|
+---------+------+------------------------------------------------------------------------------------------------------------------+
F1 float(22,21),d1 double(22,21)  指定位数弃用
*/
#插入数据 1.1111111111111111111111
insert into floatTypesWithPrecAndScale values(1.1111111111111111111111,1.1111111111111111111111,1.1111111111111111111111);
select *from floatTypesWithPrecAndScale;/*
+-------------------------+-------------------------+-------------------------+
| F1                      | d1                      | de                      |
+-------------------------+-------------------------+-------------------------+
| 1.111111164093017600000 | 1.111111111111111200000 | 1.111111111111111111111 |
+-------------------------+-------------------------+-------------------------+
1 row in set (0.00 sec)你会发现这个是f1 是我们指定的21位?  所以f1是演员 本来就保存不了 21位 你让我保存 保存不了 我没有这个能力保存  (范大将军 ,我又来了)
d1也是 保存不了的
而这个de真正保存 了数据  真正的 ‘牛肉面’ 而且里面真的‘牛肉’而且是真材实料的‘铁牛牛肉面’ de decimal(22,21) m:最多指定65位 d:最多指定30位 decimal(65,30) */

插入的位数比创建表时指定的位数要多时会按照四舍五入的规则进行插入

*/
create table  floatTypesWithPrecAndScale1(F1 float(22,2),d1 double(22,2), de decimal(22,2));insert into floatTypesWithPrecAndScale1 values(1.7777777777777777,1.77777777777777777777,1.77777777777777777);select *from floatTypesWithPrecAndScale1;
/*
+------+------+------+
| F1   | d1   | de   |
+------+------+------+
| 1.78 | 1.78 | 1.78 |
+------+------+------+
1 row in set (0.00 sec)
*/
insert into floatTypesWithPrecAndScale1 values(1.74444444444444444444444444444444,1.7444444444444444444444444444444444444,1.7444444444444444444444444444444444444);select *from floatTypesWithPrecAndScale1;
/*
+------+------+------+
| F1   | d1   | de   |
+------+------+------+
| 1.78 | 1.78 | 1.78 |
| 1.74 | 1.74 | 1.74 |
+------+------+------+
*/

http://www.ppmy.cn/news/1298436.html

相关文章

elasticsearch 接口通过 curl 调用

前言 略 调用接口查看信息 shell> curl http://localhost:9200/ {"name" : "c8f8f3ab4ce1","cluster_name" : "docker-cluster","cluster_uuid" : "zH5KP4ldSCCDvCQUtZlo5g","version" : {"…

modbus 通信协议介绍与我的测试经验分享

1、简介 Modbus 协议是一种通信协议,用于工业自动化系统中的设备间通信。该协议最初由 Modicon 公司开发,并于 1979 年发布。 Modbus 协议通过串行通信格式进行通信,在物理层上支持 RS-232、RS-422 和 RS-485 等多种通信方式。在协议层面&am…

C#对象初始化器

文章目录 一、介绍二、应用2.1 例子2.2 对象克隆器2.3 集合初始化2.4 匿名类2.5 所需成员 一、介绍 对象初始化器是在构造器后使用的初始化赋值补充语法。 在构造器后使用{},依次指定成员名和赋值表达式,以逗号进行分隔。 对象初始化器不能为只读字段赋…

c++学习:容器list实战(获取目录返回容器list)

新建一个dir.h,声明dir类 #ifndef DIR_H #define DIR_H#include <sys/types.h>#include <dirent.h> #include <stdio.h> #include <string.h>#include <iostream> #include <list>class Dir { public:Dir();static std::list<std::str…

MFC与Qt多个控件响应统一响应消息处理

就目前使用C开发框架来说&#xff0c;今天来讲述下MFC框架下与Qt框架下&#xff0c;如何让多个控件响应统一消息处理方法。 功能&#xff1a;假设有5个按钮&#xff0c;需要响应同一个处理函数&#xff0c;该如何实现呢&#xff1f; Qt方式 开发环境&#xff1a;win10 VS201…

模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

文/朱季谦 熬夜写完&#xff0c;尚有不足&#xff0c;但仍在努力学习与总结中&#xff0c;而您的点赞与关注&#xff0c;是对我最大的鼓励&#xff01; 在一些本地化项目开发当中&#xff0c;存在这样一种需求&#xff0c;即开发完成的项目&#xff0c;在第一次部署启动时&…

海外媒体发稿:9种海外媒体宣发套餐推广工具加速营销效果-华媒舍

海外市场对于企业的发展至关重要。为了在竞争激烈的海外市场中脱颖而出&#xff0c;企业需要利用各种推广工具来加速营销效果。下面就介绍9种海外媒体宣发套餐推广工具&#xff0c;它们可帮助企业在海外市场宣传自己的产品或服务&#xff0c;提高知名度和销量。 1. 新闻稿 新闻…

python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 题外话: 由于发送邮件的时候需要: 开通STMP的邮件功能邮件授权码需要写正确端口号也需要写正确而且在测试163 或者 qq邮箱服务器的时候,都能正确发送 但是换成公司邮件的时候,使用公司的域名会出现发送失败! 对于补充的知…