学校网站建设关键技术,网站注册好域名怎么办,100个简单的科技小制作视频,微信公众号如何创建赞赏账户之前总结过一篇文章mysql数据库#xff1a;decimal类型与decimal长度用法详解#xff0c;主要是个人学习期间遇到的mysql中关于decimal字段的详解#xff0c;最近在群里遇到一个小伙伴提出的问题#xff0c;也有部分涉及#xff0c;今天就再大致总结一下Java和MySQL数据库… 之前总结过一篇文章mysql数据库decimal类型与decimal长度用法详解主要是个人学习期间遇到的mysql中关于decimal字段的详解最近在群里遇到一个小伙伴提出的问题也有部分涉及今天就再大致总结一下Java和MySQL数据库中关于小数的保存问题 目录 Java 中的小数类型floatdoubleBigDecimal MySQL 中的小数类型1. FLOAT2. DOUBLE3.Float 对比分析1. 精度要求2. 存储空间3. 舍入误差 书籍推荐书籍名称《Java图解创意编程从菜鸟到互联网大厂之路》内容介绍适合人群如何领书 Java 中的小数类型
在Java中小数的表示主要依赖于两个基本数据类型float和double。这两种类型都是浮点类型但它们在精度和存储空间上有所不同。
float 单精度浮点数字节数为 4占用32位整数部分最多 7 位小数部分最多 7 位取值范围太小几乎没有用但通常用于节省内存空间。 double 双精度浮点数字节数为 8占用64位整数部分最多 15 位小数部分最多 15 位基本够用计算金钱可以达到1 亿亿以内的范围提供更高的精度但占用更多的内存空间。 BigDecimal 比较大的小数只能使用 BigDecimal 来接收MySQL 数据库 decimal 可以保存最多 65 位的小数但是 double只能接收差不多 15 位的小数。 数据库获取到数据需要转换成字符串类型然后再使用 BigDecimal(String) 构造器将数值封装成一个 BigDecimal 对象。 在实际开发中选择合适的类型要根据精度和内存占用的平衡以满足业务需求。 MySQL 中的小数类型
MySQL中提供了多种小数类型主要包括FLOAT、DOUBLE、DECIMAL。每种类型都有其独特的特点。
1. FLOAT 单精度浮点数适用于需要较大范围的数值但对精度要求不高的情况。 用于表示近似数值数据类型。SQL 标准允许在关键字 float 后面的括号内选择用位指定精度(但不能为指数范围)。0 到 23 的精度对应 float 列的 4 字节单精度。 myfloat FLOAT(8,4);例如上面定义为 float(8,4) 的一个列可以显示为 -9999.9999。MySQL 保存值时进行四舍五入因此如果在 float(8,4) 列内插入 9990.00009近似结果是 9990.0001。
⚠️float 数据在运算时如果数字溢出不会报错会有精度的损失。
2. DOUBLE 双精度浮点数提供更高的精度适用于对数值精度要求较高的场景。 可以设置保留的小数个数。decimal(m,d)表示该值一共显示 m 位整数其中 d 位位于小数点后面。 decimal 和 numeric 类型在 MySQL 中视为相同的类型。它们用于保存必须为确切精度的值例如货币数据。当声明该类型的列时可以(并且通常要)指定精度和标度。 例如
salary decimal(5,2)在该例子中5 是精度2 是标度。精度表示保存值的主要位数标度表示小数点后面可以保存的位数。 在标准SQL中语法 decimal(m) 等价于 decimal(m,0)。同样语法 decimal 等价于vdecimal(m,0)可以通过计算确定 m 的值。在MySQL 5.1中支持 decimal 和 numeric 数据类型的变量形式。m 默认值是 10。 decimal 或 numeric 的最大位数是 65但具体的 decimal 或 numeric 列的实际范围受具体列的精度或标度约束。如果此类列分配的值小数点后面的位数超过指定的标度允许的范围值被转换为该标度。(具体操作与操作系统有关但一般结果均被截取到允许的位数。 注当对 decimal 类型的数据进行运算操作时如果数值溢出会报错。
3.Float 单精度浮点数适用于需要较大范围的数值但对精度要求不高的情况。用于表示近似数值数据类型。 SQL 标准允许在关键字 float后面的括号内选择用位指定精度(但不能为指数范围)。0 到 23 的精度对应 float 列的 4 字节单精度。 例如定义为 float(7,4) 的一个列可以显示为 -999.9999。MySQL 保存值时进行四舍五入因此如果在 float(7,4) 列内插入 999.00009近似结果是 999.0001。
注float 数据在运算时如果数字溢出不会报错会有精度的损失。 对比分析
1. 精度要求
如果业务对小数的精度要求较低且对内存占用有要求可以选择使用float。如果需要更高的精度但仍然可以容忍一定的舍入误差可以选择使用double。如果业务对小数的精度要求非常高且不能容忍任何误差应该选择DECIMAL。
2. 存储空间
float占用4字节适用于存储较大范围的数值。double占用8字节提供更高的精度但占用更多的存储空间。DECIMAL的存储空间与精度有关但通常比double更节省存储空间。
3. 舍入误差
浮点数float和double在进行计算时可能存在舍入误差因为它们是基于二进制表示的而十进制小数无法精确表示为二进制小数。DECIMAL类型是基于十进制的不会出现浮点数的舍入误差适用于对精度要求极高的场景。 书籍推荐 这是一本兼具趣味性、实用性、广泛性的好书简直是编程小白的福音 一、深入浅出用可视化项目让读者体验动手创造世界的编程成就感。 二、理论和工程相结合在动手的同时夯实基础让读者更直观地理解数据结构、算法、网络等计算机底层原理。 三、通过代码级别的讲解让初学者有机会在自学过程中丰富自己的实战经验接触到业界流行的技术框架为未来实习和进入职场打下坚实基础。 书籍名称《Java图解创意编程从菜鸟到互联网大厂之路》 内容介绍
本书从问题入手使用100多个创意编程范例试图在深入理解原理的基础上通过自造“轮子”帮助读者提升代码编写功底和工程实现能力。全书分为12章内容包括Java入门、分形图像处理、数据结构、网络通信、动态装载、多线程、Raft协议、分布式编程和ZooKeeper框架等由浅入深实现“美颜相机”“迷你通信会议”“迷你Web服务器”“迷你Raft”等项目。本书针对每一个范例首先给出代码实现和重要知识点然后提出任务以使读者发挥创意提升代码编写技能。
适合人群
本书由浅入深有趣有料适合想提升代码编写水平的大学生、求职者、编程爱好者阅读也适合有12年开发经验的程序员参考还可以作为各类培训班的培训教材。
如何领书
———————————————— 本次本篇文章送书 2-3本 评论区抽2-3位小伙伴送书 活动时间截止到 2023-12-06 20:00:00 抽奖方式利用网络公开的在线抽奖工具进行抽奖 参与方式关注、点赞、收藏评论 “人生苦短我要去大厂搬砖” 根据文章阅读量的多少来安排送书的本数。 ———————————————— 注活动结束后会私信中奖粉丝的各位注意查看私信哦
小伙伴也可以访问链接进行自主购买哦~ 直达京东购买链接《Java图解创意编程从菜鸟到互联网大厂之路》