mysql Decimal 运算;
大家好,又见面了,我是你们的朋友全栈君。
MySQL DECIMAL
数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL
数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
要定义数据类型为DECIMAL
的列,请使用以下语法:
column_name DECIMAL(P,D); |
---|
在上面的语法中:
P
是表示有效数字数的精度。P
范围为1〜65
。D
是表示小数点后的位数。D
的范围是0
~30
。MySQL要求D
小于或等于P
。
与INT数据类型一样,DECIMAL
类型也具有UNSIGNED
和ZEROFILL
属性。 如果使用UNSIGNED
属性,则DECIMAL UNSIGNED
的列将不接受负值。
如果使用ZEROFILL
,MySQL将把显示值填充到0
以显示由列定义指定的宽度。 另外,如果我们对DECIMAL
列使用ZERO FILL
,MySQL将自动将UNSIGNED
属性添加到列。
(其中 p为总位数, 就和float 与double类型的一样 例如 :amount DECIMAL(6,2);这个表示总共位数有6位,小数占去2位,整数部分为最多4位,最大与最小值9999.99~-9999.99;)
其中 在MySQL中执行加减乘除
create table decimal_test(
id int auto_increment PRIMARY key,
score decimal(5,2) -- 取值范围是 -999.99 到 999.99
);
ALTER TABLE decimal_test
MODIFY score DECIMAL(6,3) UNSIGNED;
-- 正数:
insert into decimal_test(score) VALUES(1.23); -- 1.23
insert into decimal_test(score) VALUES(123.45); -- 123.45
insert into decimal_test(score) VALUES(123.455); -- 123.46
insert into decimal_test(score) VALUES(123.451); -- 123.45
insert into decimal_test(score) VALUES(123.451123); -- 123.45
insert into decimal_test(score) VALUES(12345.451123); -- Out of range value for column 'score'
- 负数:
insert into decimal_test(score) VALUES(-1.23); -- -1.23
insert into decimal_test(score) VALUES(-12.34); -- -12.34
insert into decimal_test(score) VALUES(-123.45); -- -123.45
insert into decimal_test(score) VALUES(-999.45); -- -999.45
insert into decimal_test(score) VALUES(-12343); -- Out of range value for column 'score'
UPDATE decimal_test t set t.`score`=t.`score`/100 WHERE t.id=1; --0.01
UPDATE decimal_test t set t.`score`=t.`score`-100 WHERE t.id=1;-- Out of range value for column 'score' at row 1
-- 除了减法,其他测试正常
从上边总结可以看出 其中要用sql 直接做运算 除了减法 其他方法可以正常执行;
嗯 那么碰到减法了,如果当前存储数据比要减少的数据小的话,那最好另外的地方直接做获取结果,最终在需要的地方做更新就好;
追加, 在java 中 直接给mysql 传decimal 类型数据 让mysql 做计算仍然会出现误差, 最终方案是将其在更新之前 获取结果,最终直接给mysql 传递需要更改的值,做存储就好!!
just do it!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160884.html原文链接:https://javaforall.cn
相关文章
- 【MySQL高级】MySql中常用工具及Mysql 日志
- 运算MySQL数据加减运算:实现快速精确分析(mysql数据加减)
- 图片MySQL实现图片存储的技术指南(mysql怎么存储)
- MySQL优化表:轻松实现数据运算速度快(mysql优化表)
- 【长沙】MySQL培训班:学习走向数据库专业人士(长沙mysql培训)
- 给MySQL授权:快速配置权限指令(给mysql授权命令)
- MySQL时间计算技巧(mysql的时间运算)
- 学习MySQL:视频教程助你快速上手(mysql的使用视频教程)
- MySQL如何更改表字段名(mysql改字段名)
- MySQL如何利用取模运算优化数据库查询(mysql取模)
- Mysql处理经纬度坐标的字段研究(mysql经纬度字段)
- MySQL远程使用:掌握基础知识,远程操作Mysql数据库。(mysql远程使用)
- MySQL的基础运算知识指南(mysql运算)
- 学会MySQL回滚:轻松恢复数据误操作问题(mysql如何回滚)
- MySQL数据库平方运算的实现方法及应用场景分析(mysql平方)
- 运算MySQL数据库:UNION操作实践(mysql数据库并集)
- MySQL主从延迟监控:揭开完美运行的神秘面纱(mysql 主从延迟监控)
- MySQL中SQL如何执行乘法运算(mysql中sql如何乘)
- 如何在MySQL中实现简单的加法运算(mysql中加法计算)
- MySQL中的加法运算实现简单的数值计算(mysql中加法)
- MySQL实现减法运算的方法及应用场景详解(mysql 中减法)
- MySQL中的三元运算语法和使用技巧(mysql 三元运算)
- GET MYSQL 免费下载并破解MySQL数据库软件(mysql下载和破解)
- 学习MySQL查询日志的指令(mysql下查询日志指令)
- 避免小数运算错误,MySQL应用中不要轻视小数类型(mysql 不要小数)