数据类型【TINYINT、SMALLINT、INT、BIGINT、decimal(18,2)】表示意思
数据类型占用字节占用位数取值范围有符号INT8 / TINYINT1 字节8 位-128 到 127INT16 / SMALLINT2 字节16 位-32,768 到 32,767INT32 / INT4 字节32 位-21亿 到 21亿INT64 / BIGINT8 字节64 位约 ±922亿亿Q:TINYINT 就是1字节 为什么可以存-128 到127呢?A:你说得非常对TINYINT 确实只占用 1 个字节即 8 个比特位。之所以能存储 -128 到 127 这么“不整齐”的范围是因为计算机在存储有符号整数时采用的是二进制补码Two’s Complement规则而不是我们直觉中的“原码”。这里有三个关键点可以帮你理解8 个比特位的排列组合1 字节 8 位。每一位可以是 0 或 1所以总共能表示的状态数是 2^8 256 种。如果是无符号unsigned类型这 256 个状态全部用来表示正数范围就是 0 到 255。但在有符号signed类型中我们需要表示负数。最左边的那一位最高位被规定为符号位0 开头表示正数。1 开头表示负数。为什么不是 -127 到 127你可能会觉得既然有一位用来做符号了剩下的 7 位表示数值2^7128范围应该是 -127 到 127共 255 个数。这里有两个关键原因导致范围变成了 -128 到 127原因一0 的位置在计算机中0 被视为正数或者说非负数它的二进制是 0000 0000。这意味着正数阵营里0 占用了一个名额。所以正数剩下的名额只有 127 个从 1 到 127。如果不把 0 算在负数里正数那边就比负数多占了一个位置为了平衡负数那边必须多“借”一个位置。原因二补码的“负零”机制核心原因这是最根本的原因。在补码规则中二进制 1000 0000 被定义为 -128而不是 -0。让我们看看具体的对应关系 0111 1111 127 (最大值) 0000 0001 1 0000 0000 0 1111 1111 -1 1000 0001 -127 1000 0000 -128 (最小值)总结因为计算机利用 1000 0000 这个特殊的组合来表示 -128而不是浪费它来表示“负零”所以负数那边能存到 -128而正数那边因为包含了 0最大值只能到 127。套用到 TINYINT (n1)最小值-2^7 -128最大值2^7 - 1 127deciaml (182) 是什么意思DECIMAL(18, 2) 是数据库中一种用于存储精确数值的数据类型常用于需要高精度的场景比如金融领域的金额计算。简单来说它的含义是总共可以存储 18 位数字其中小数点后固定保留 2 位。 参数详解DECIMAL(p, s) 由两个参数定义p (Precision / 精度)代表数字的总位数包括小数点左边整数部分和右边小数部分的所有数字。在你的例子中p 是 18。s (Scale / 标度)代表小数点后可以存储的位数。在你的例子中s 是 2。 以 DECIMAL(18, 2) 为例根据上面的定义我们可以算出它的存储能力总位数18 位。小数位数2 位。整数位数总位数 - 小数位数 18 - 2 16 位。这意味着使用 DECIMAL(18, 2) 的字段最大值9999999999999999.99 (16个9 .99)最小值-9999999999999999.99✨ 主要特点精确存储与 FLOAT 或 DOUBLE 不同DECIMAL 是一种定点数类型它能精确地存储你输入的数值不会因为二进制转换而产生微小的精度误差。例如0.1 0.2 的结果就是精确的 0.3而不是 0.30000000000000004。自动补零如果你插入的数字小数位不足 2 位数据库会自动补零。例如插入 123 会被存储为 123.00。四舍五入如果你插入的数字小数位超过 2 位数据库通常会进行四舍五入。例如插入 1.237 会被存储为 1.24。 适用场景由于其精确性DECIMAL 类型是存储以下数据的理想选择货币金额商品的价格、账户余额、交易流水等。科学数据需要固定精度的实验测量值。税率、利率任何不允许有计算误差的百分比数值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2569014.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!