mysql 字段是DECIMAL(9,2) 字段=''是什么意思

mysql字段decimal(9,2)中9是定点精度,2是小数位数。

存在这么一个公式:decimal(a,b)。

其中a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38;

b指定小数点右边可以存储的十进制数字的最大个数,小数位数必须是从0到a之间的值,默

认小数位数是0。

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。

如何从mysql中取出类型为decimal的数据

如何从mysql中取出类型为decimal的数据

1、查询表结构,找出数据类型为decimal的字段2、select数据类型为decimal的字段从表中3、数据导出

MySQL中Decimal类型和Float Double的区别

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

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

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

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

2、DESC test;

3、INSERT INTO test(f,d,de) VALUES(1.23,1.23,1.23);

数据插入都正确

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

数据插入都正确,但是f和d由于标度的限制,舍去了最后一位。

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

数据也插入成功,但是有一个警告提示:

1 queries executed, 1 success, 0 errors, 1 warnings

Note Code : 1265

Data truncated for column 'de' at row 1

6、将id1,id2,id3的精度和标度都去掉

ALTER TABLE test MODIFY f FLOAT;

ALTER TABLE test MODIFY d DOUBLE;

ALTER TABLE test MODIFY de DECIMAL;

DELETE FROM test;

DESC test;

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

1 queries executed, 1 success, 0 errors, 1 warnings

Note Code : 1265

Data truncated for column 'de' at row 1

f和d的数据正确插入,而de被截断。

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

同时,对数据求SUM()时会出现不同的结果,float和double求SUM都会出现很多小数点,而decimal求SUM得到的是精准数值:

8、INSERT INTO test(f,d,de) VALUES(1.234,0.01,1.23);

数据都插入成功

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

理论上SUM(f)=3.698,SUM(d)=2.474,SUM(de)=3.46,但f,d都出现后面很长的一串浮点小数点。float是单精度,double是双精度,decimal是数字型,它们所占的内存空间不一样,表示的位数也不一样。除了科学计算以外,一般不用double型的。对于数字(包括小数)一般用decimal型的。

我们可以像如下的方式定义一个decimal类型的浮点数:

decimal d = 12.30m;

对decimal、float、double错误的认识

在精确计算中使用浮点数是非常危险的,尽管c#在浮点数运算时采取了很多措施使得浮点数运算的结果看起来是非常正常的。但实际上如果不清楚浮点数的特性而贸然使用的话,将造成非常严重的隐患。

考虑下面的语句:

doubledd=10000000000000000000000d;

dd+=1;

console.writeline("{0:g50}",dd);

输出是:1000000000000000000000000

这就是浮点数精度损失的问题,最重要的是,在精度损失的时候,不会报告任何的错误,也不会有任何的异常产生。

浮点数的精度损失可能在很多地方出现,例如d*g/g不一定等于d,d/g*g也不一定等于d。

还有两个非常危险的错误认识!!

1、decimal不是浮点型、decimal不存在精度损失。

下面有段程序大家可以去看看结果是什么。记住!所有的浮点型变量都存在精度损失的问题,而decimal是一个不折不扣的浮点型,不论它精度有多高,精度损失依然存在!

decimaldd=10000000000000000000000000000m;

dd+=0.1m;

console.writeline("{0:g50}",dd);

2、decimal所能储存的数比double大,从double到decimal的类型转换不会出现任何问题。

微软在decimal的帮助上真的要好好反省了。实际上只有从整形到decimal的转换才是扩大转换,decimal的精度比double大,但所能储存的最大数却比double要小。

“decimal类型是适合财务和货币计算的128位数据类型。”

当然,decimal在大多数情况下是安全的,但浮点数在理论上是不安全的。

至于精度误差造成的显示问题,则是很容易修补的。浮点数会带来的问题以及整型能避免的问题就是一个:

譬如说从a帐户转账到b帐户,经计算得出结果是3.788888888888888元,那么我们从a帐户扣除这么多钱,b帐户增加这么多钱,但事实上a帐户不一定会扣除准确的数值,例如a帐户的金额在100000000000,那么这个时候100000000000-3.788888888888888运算结果很有可能是99999999996.211111111111112。而这个时候b帐户的金额为0则很有可能加上准确的数值,如3.788888888888888,这样一来,0.011111111111112元钱就会不见了,日积月累的,差额就会越来越大。

double是64位的,比single-32位精度高。

decimal128位高精度浮点数,常用于金融运算,不会出现浮点数计算的误差,decimal类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。

mysql 中的decimal

可能做程序的人都知道,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)十进制小数,他的精度高,而且没有误差。楼上说的不对,ta和浮点数相差很大。浮点数是直接把小数转化为二进制,二多数小数转化为二进制是有误差的,也就是说不能精确表示。decimal则可以没有任何误差的表示小数

MySQLdecimal对应java相关推荐

  1. matplot中的scatter绘图

    查看全文 http://www.taodudu.cc/news/show-3843827.html 相关文章: scatter python cmap_使用matplotlib中scatter方法画散 ...

  2. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  3. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  4. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  5. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  6. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  7. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  8. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  9. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

最新文章

  1. Datawhale面经项目来了!
  2. Error:No resource identifier found for attribute 'appComponentFactory' in packag
  3. java+spring+mysql配置_JAVA后台搭建(springboot+mybatis+mysql)项目搭建
  4. pycharm常用设置(keymap设置及eclipse常用快捷键总结)
  5. 一维数组去重处理法二(C语言)
  6. Python for和if的连写
  7. html实例,实现表单
  8. 基于springboot的张家口自驾游管理系统
  9. 2022-2028全球与中国防爆照明LED灯市场现状及未来发展趋势
  10. android11更新了什么,一加8安卓11更新了什么 一加8安卓11更新内容
  11. 网络表示学习简单总结(一)
  12. 怎么选型企业客户管理软件?看看别人是怎么做的
  13. Linux内核之misc框架
  14. 今日金融词汇---应收,是什么?
  15. 张小龙2011年饭否日记
  16. 解决了:微信小程序使用canvas绘制倒计时圆圈和数字居中的实现
  17. pod:Kubernetes(k8s)创建pod的两种方式
  18. 问题 K: oop实习-11.运算符重载
  19. 设计模式(注重理解为什么),
  20. STM32学习之ADC(模拟数字转换器)

热门文章

  1. 有源蜂鸣器和无源蜂鸣器
  2. 不解压查看linux文件
  3. solr mysql_使用Solr索引MySQL数据
  4. Element之layout布局
  5. SmartQQ二维码登陆接口分析
  6. python 爬虫前奏六 ExpectedConditions用法大全
  7. python可以在多种平台运行、体现了_2020年智慧树数据结构与算法第二单元章节测试答案...
  8. 用计算机绘制颗粒级配曲线,精确绘制土颗粒级配曲线图方法的研究.doc
  9. EXTJS 中grid 动态增加列的方法
  10. es文件管理连接ftp服务器,es文件浏览器访问ftp服务器