DECIAML字段字节计算

php浮点数计算问题 问题$a = 0.2+0.7; $b=0.9; var_dump($b); var_dump($a==$b); //输出内容 bool(false)由于计算机十进制和二进制计算之间的存储,存在一定的精度丢失程序运行详情如下:$a = 0.2+0.7; printf('%0.20f',$a); //0.89999999999999991118 var_dump($a); $b=0. 阅读详情

前言

最近在看《深入浅出MySQL》一书,看到了数值类型那一节。里面介绍了一些常用字段的相关信息,如字节长度、最大值、最小值等。

当看到 DECIMAL 字段时,它的字节数是 M+2,这个让我很不解,是为什么?

查阅+理解

DECIAML 与 FLOAT 和 DOUBLE 的存储方式不同。

FLOAT 和 DOUBLE 是用二进制存储数据的,所以会有部分精度问题。

DECIAML 是用字符串的方式存储的,所以它不存在精度问题,那么它的长度就是存储字节的长度。

那么问题来了,例如:DECIMAL(5,2) 的最大值是 999.99,那么总长度也就是 5+1,又为什么是 5+2 呢?

隐藏的 +

第二天工作的时候,帮忙拉取一个数据,就手动操作了一把,其中两个数据要相加一下。当我看到那个 + 号时,我想通了。

DECIMAL 也是有符号位的,而当时我只看的最大值,如果看最小值的话,就能够想通为什么是 M+2 了。

所以最终 DECIMAL 的长度计算方式是:1个字节的符号位 + 一个字节的小数点位 + 纯数字的长度(M) = 1 + 1 + M = M + 2。

结语

困点得以解决,这种思考是被人直接告知要更加难得的,问题虽小,值得纪念。

– EOF –
本文转载自IMJCW
原文链接:DECIAML字段字节计算

西安电子科技大学841学长经验分享(总成绩第三名) 阅读详情

相关推荐

先进封装技术 Part03---重布线层(RDL)的科普

RDL是一种在芯片封装过程中用于重新分布电气连接的技术。它通过在芯片表面或中介层上形成额外的布线层,重新分配芯片的I/O(输入/输出)位置,以适应不同的封装需求和提高电气连接的灵活性。

阿拉伯梳子的专栏 4703

PHP 数学函数 精度计算

bcadd—两个任意精度数字的加法计算 bccomp—比较两个任意精度的数字 bcdiv—两个任意精度的数字除法计算 bcmod—对一个任意精度数字取模 bcmul—两个任意精度数字乘法计算 bcpow—任意精度数字的乘方 bcpowmod—将任意精度数提高为另一个,并减少指定的模数 bcscale—设置所有bc数学函数的默认小数点保留位数 bcsqrt—任意精度数字的二次方根 bcsub—两个任意精度数字的减法 官网:https://www...

志志网的博客 331

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

PHP精确计算

浮点数的比较和运算会损失精度,对于涉及金钱的存储与运算,需要高精度的存储与计算。 Mysql中,float为单精度浮点型,double为双精度浮点型,这两种在计算时都会存在失真的问题,而decimal,则可以解决这样的问题,具体如下: MySQLDECIMAL数据类型用于...

chuxiang12345的博客 381

【系统架构设计师】预测试卷十:综合知识(75道选择题)

本文包含75道选择题,覆盖计算机系统、操作系统、网络、数据库、软件工程等核心知识域,其中系统架构设计与评估占比最高(19题)。题目难度稍高,注重灵活应用,题干全新且不与前8套重复。部分典型题目解析包括:计算机性能比较(CPU时间公式TLB/页表机制)、Cache写策略、流水线分支惩罚、管程条件变量、LRU近似算法、自旋锁适用场景、TCP字节流特性、Anycast应用、MVCC机制、分布式事务选型等。答案详解强调易错点,如性能比较需综合计算、TLB缺失不等于缺页、

数据知道的博客 478

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

decimal类型怎么算字节数

相比于float,double类型,decimal类型属于精确类型,不会丢失精度,所以只要涉及到金钱,财务相关的数据,对应的类型一定要选择decimal。 那么decimal类型怎么算字节数,怎么看支持的数字可以到几位小数和几位整数呢? 举个例子,数据库的商品售价字段类型被定义为Decimal(18,9),18这个数代表着商品售价最长可以到18位,而9这个数字表示小数点后面有9位数字,那么18-9=9,也就得出了整数位可以有9位。 对于decimal类型来说,每4个字节存9个数字,那么以上数据一共有18

硅脂味咖啡的博客 6551

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 934

你不一定了解MySQL中的Decimal数据类型

MySQL中Decimal数据类型大家经常使用到,但是,你真的了解这种数据类型吗?

u014282578的博客 2万+

企业微信第三方应用014_企业微信5种第三方应用的安装方式_上架到应用市场_服务商后台点击安装测试_生成应用推广二维码安装---企业微信开发016

成员授权的意思就是,只要是这个成员扫码安装了这个应用,那么这个应用就只有这个成员可以用。安装的时候可以设置可见范围,这个地方可以设置整个公司或者是某个部门或者是某些人可以让这个应用来进行操作。创建了以后,这个二维码就可以发出来进行推广别人用户扫描了以后就可以把自己的企业微信给安装上对应的应用了。然后在对应的这个微信的企业后台就可以看到在第三方中有这个应用了。可以看到这个就是服务商的后台对应的一个应用,我们点击打开应用。可以看到这里有两个授权,一个是成员授权,一个是管理员授权。就可以去创建推广二维码了。

添柴程序猿的专栏 590

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 435

bigint对应java什么类型_MySQL(1)——数据类型的选择(一)

一、三个原则更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。比如,使用整型存储 IP 地址。尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。不过一般将 NULL 的列改为非 NULL 性...

weixin_39681621的博客 1805

第9.3章 从CMake基础到自动驾驶实战:构建跨平台C/C++项目的全能指南

《CMake构建实战:项目开发卷》精要指南 本文系统梳理了许宏旭《CMake构建实战》核心内容,涵盖C++构建全流程: 基础构建:详解MSVC/GCC编译器使用、Makefile编写及静态/动态库构建方法 CMake核心:解析语法结构、变量控制、文件操作等关键命令,阐述项目全生命周期管理 实战应用:通过快速排序、手写数字识别项目演示现代CMake实践,特别针对自动驾驶领域给出多传感器融合、SLAM等场景的CMake配置方案 特色价值:本书填补了官方文档实例不足的空白,提供300+代码示例,是掌握工业级C++

行知SLAM 1343

MySQL(1)——数据类型的选择(一)

一、三个原则 更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。 简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。比如,使用整型存储 IP 地址。 尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。不过一般将 NULL 的列改为非 NULL 性能提升比较小,在对应列建索引时应避免设计为可为 NULL。 二、整数类型 存储整数,可以使用的类型

fanrendale的博客 273

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mysql 保留两位小数 查询_MySQL(1)——数据类型的选择(一)

一、三个原则更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。比如,使用整型存储 IP 地址。尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。不过一般将 NULL 的列改为非 NULL 性...

weixin_42181693的博客 1551

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【MySQL原理系列】- MySQL中的数据类型

包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT ,分别使用8,16,24,32,64位存储空间,值范围从−2^(N−1) 到2^(N−1) −1,N是存储空间的位数。与CHAR 和VARCHAR 类似的类型还有BINARY 和VARBINARY ,它们存储的是二进制字符串,二进制字符串存储的是字节码而不是字符,填充BINARY采用的是\0(零字节)而不是空格。二进制类型是TINYBLOB,SMALLBLOB,BLOB,MEDIUMBLOB,LONGBLOB。

m0_68383079的博客 1067

mysql数据类型优化

选型原则: 1、在保证足够用的前提下尽量选择最小类型!越小消耗的cpu越少 2、简单就好,使用简单数据类型的操作通常需要更少的cpu周期;比如字符集和校对规则(排序规则)使字符比较比整型比较更加复杂,应该使用mysql内建的类型(data,time,datatime)来存储日期时间而不是字符串,应该用整型存储ip地址因为字符的校对、排序规则要复杂 整形比字符代价更低 ...

aochijing0046的博客 154

MySQL常用数据类型

整数类型 包含:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8(1),16(2),24(3),32(4),64(8)**位(字节)**存储空间。 整数类型有可选的UNSIGNED属性,表示不允许负值,可以让正数的上限提高一倍。 类型只是决定怎么在内存和磁盘中保存数据。然而在计算时一般使用64位的BIGINT。 MySQL可以为整数类型指定宽度,例如INT(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL的一些交互工具(例如MySQL命

LittleWear的博客 226

MySQL选取各类别的前三_MySQL(1)——数据类型的选择(一)

一、三个原则更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。比如,使用整型存储 IP 地址。尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。不过一般将 NULL 的列改为非 NULL 性...

weixin_35203997的博客 251

mysql 最短的数据类型_高性能mysql总结(一 数据类型优化)

选择优化的数据类型mysql支持的数据类型非常多,选择正确的数据类型对于获取高性能至关重要。不管存储哪种类型的数据,下面几个简单的原则都有助于做粗活更好的选择。最小的通常更好一般情况下,应该尽量使用正确存储数据的最小数据类型。最小的数据类型通常更快,因为它们占用更少的磁盘、内存和cpu缓存,并且处理时需要的cpu周期也更少。但是要确保没有低估需要存储的值的范围,因为在schema中的多个地方增加数...

weixin_35874865的博客 305

mysql decimal类型与decimal长度详解

三者区别:float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)decimal详细介绍: decimal(a,b)  参数说明a指定指定小数点左边和右边可以存储...

sunny1660的博客 1万+

#decimal运算法则

#decimal运算法则 decimal 类型值的运算结果是这样得出的:先计算一个精确结果(按每个运算符的定义保留小数位数),然后舍入以适合表示形式。结果舍入到最接近的可表示值,当结果同样地接近于两个可表示值时,舍入到最小有效位数位置中为偶数的值(这称为“银行家舍入法”)。零结果总是包含符号 0 和小数位数 0。 银行家舍入 就是四舍六入五取偶法,其规则是:当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6 时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的

weixin_52308100的博客 1418

PHP Decimal 扩展:精确的任意精度十进制运算

PHP Decimal 扩展:精确的任意精度十进制运算 PHP Decimal 扩展是一个开源项目,旨在为 PHP 提供正确四舍五入的任意精度十进制浮点数算术运算能力。该项目主要使用 PHP 和 C 语言开发。 项目基础介绍 PHP Decimal 扩展通过提供一个 PHP 扩展的方式,引入了任意精度的十进制运算功能。它基于 libmpdec 库,这个库是专门用于十进制浮点数运算的,保证了计算的精...

gitblog_00169的博客 454

php读取decimal显示00000,对decimal 类型的数据进行获取调整

Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。好处:使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间在C#中 decimal 表示128 位的数据类型。与double类型相比有更高的精度和更小的类型百分比使用 decimal(4,2) 就可以“4” 指的是整数部分加小数部分的总长度,也即插入...

weixin_42323064的博客 977

mysql decimal php,PHP中的MySQL DECIMAL处理

如通常讨论的那样(例如Storing 0.00001 in MySQL),DECIMAL数据类型应用于需要精确度/正确性的字段,例如帐户余额.但是,我想知道PHP如何处理这些值,以及如果它们在内部以浮点数进行处理,那么从数据库读取这些值,进行一些计算并再次写回它们时是否仍然存在问题.如果是这样,我们如何才能迫使PHP保持精度?解决方法:该变量可能是最初在PHP中的字符串(从MySQL结果对象读取时...

weixin_29359001的博客 497

PHP Decimal 扩展使用教程

PHP Decimal 扩展使用教程 1、项目介绍 PHP Decimal 扩展是一个用于 PHP 的任意精度十进制浮点数运算库。它提供了精确的十进制算术运算,适用于需要高精度计算的场景,如金融计算、科学计算等。该扩展基于 libmpdec 库,支持 PHP 7.2 及以上版本。 2、项目快速启动 安装 使用 PECL 安装 pecl install decimal 使用 phpbrew 安装 ...

gitblog_00132的博客 576
上一篇: 字符串字符分割和驼峰形式的转换
下一篇: PDO 绑定IN()语句的Array变量
IMJCW
博客等级 码龄10年 13粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值