mysql Decimal 运算;

mysql Decimal 运算;MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。要定义数据类型为DECIMAL的列,请使用以下语法: column_nameDECIMAL(P,D); 在上面的语法中:P是表示有效数字数的精度。P范围为1〜65。 D是表示小数点后的位数。D的范围是0~30。MySQL要求D小于或等于(<=)P。与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZER…

大家好,又见面了,我是你们的朋友全栈君。

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.net/160884.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vim 退出命令(保存、放弃保存)_linux保存并退出vim

    vim 退出命令(保存、放弃保存)_linux保存并退出vim测试环境VMware12Pro下CentOS7自带vim7.4.1099今天下午第一次接触这个vim文本编辑器,拿到一个陌生的工具,我们想的当然是最短的时间掌握它的基本操作,体会到成就感。如果你跟我一样,那么这篇教程或许对你有所帮助。Linux下一切皆文件,所以需要强大的文本编辑器,而vim就是Linux上一个功能强大且使用广泛的文本编辑器。它可以建立、编辑、现实文件,并且它只有命令没…

    2022年8月24日
  • eclipse使用maven教程

    eclipse使用maven教程eclipse使用maven教程什么是mavenmaven下载与安装与配置1下载2安装3配置环境变量在eclipse中配置1m2eclipse安装2配置eclipse3创建一个maven项目1项目的结构2Eclipse中maven常用的命3使用maven命令0.什么是maven参考https://www.cnblogs.com/whgk/p

    2022年4月6日
  • 使用DataGridView进行增删改查,并同步到数据库

    使用DataGridView进行增删改查,并同步到数据库

    2021年11月13日
  • Django(74)drf-spectacular自动生成接口文档「建议收藏」

    Django(74)drf-spectacular自动生成接口文档「建议收藏」介绍drf-spectacular是为DjangoRESTFramework生成合理灵活的OpenAPI3.0模式。它可以自动帮我们提取接口中的信息,从而形成接口文档,而且内容十分详细,再也不

    2022年8月7日
  • Java webservice详解「建议收藏」

    Java webservice详解「建议收藏」Javawebservice详解1webservice概述2webservice核心要素2.1SOAP2.2WSDL3webservice的使用场景4webservice的结构5Java中的webservice5.1webservice服务端5.2webservice客户端6WDSL文件说明7webservice请求与响应监控7webservice在Tomcat中发布…

    2022年7月13日
  • 嵌入式Linux开发流程_嵌入式开发一般采用什么方式

    嵌入式Linux开发流程_嵌入式开发一般采用什么方式在学习嵌入式开发的过程中,尤其是开始入门时,包括各种各样的教程,都是在讲学习linux,很少讲如何利用linux来开发属于自己的嵌入式项目,也就是没有一个全局的概念,简单理解,大概流程如下:一、建立开发环境   操作系统当然是LInux,或者在win系统下安装虚拟机,通过网络下载相应的GCC交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。  这一步,就相当于在win系统下,要

    2022年10月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号