贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

mysql Decimal 运算;

来源:网络转载 时间:2023-12-14 09:36:13

MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。

要定义数据类型为DECIMAL的列,请使用以下语法:

cellpadding="0" cellspacing="0">

column_nameDECIMAL(P,D);

在上面的语法中:

  • P是表示有效数字数的精度。P范围为1〜65
  • D是表示小数点后的位数。D的范围是0~30。MySQL要求D小于或等于P

与INT数据类型一样,DECIMAL类型也具有UNSIGNEDZEROFILL属性。 如果使用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!

标签:MySQL-

SEO小店网站优化 能带来大量精准流量的网站才是好网站,小店网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

汉寿网站排名快速提升 汉寿网络公司快速提升企业网站排名,通过网站优化推广,让汉寿企业网站在搜索引擎的排名长期稳定。 ...

SEO张家界网站优化 能带来大量精准流量的网站才是好网站,张家界网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

阿里巴巴为什么要重发?因为阿里巴巴的产品排名是按照你发布的先后顺序排列的,而且也和你的产品信息的新鲜度有关。一般3天再发一次。如果想短时间内再发,可以修改产品名称。阿里巴巴每次刷新都会重新排列产品的排名。一般阿里巴巴早上8: 00第一次刷新,之后每1小时刷新不超过5分钟,下午5: 45最后一次刷新,决定了你的产品在下一个晚上的排名!阿里巴巴重发有什么用?让阿里巴巴诚信通会员的商品信息获得更好的排名...

oa流程审批意见怎么写?简单就就写同意,然后再写上一些注意事项。OA上面催办是什么意思?在免费crmoa办公系统中,点击首页审核流程中的催办,那么系统实现会马上再直接发送一次提出要求报批的站内媒体报道给审批程序人,申请审批人一登录账号办公系统,就会能看到这条提出要求审批的最新消息。oa流程附件怎么更改?1、提前终止整体流程退入文件内容后修改后。2、crm各个流程及附件的更改规定要求:1)选定文件内...

头花怎么扎在包包头中间视频?步骤1:先扎个马尾。马尾越高越好。马尾越高,花袋越高!步骤2:放入芽发套。步骤3:然后把刚刚扎好的马尾分成上下两部分。步骤4:把头发塞进“发套”就行了。步骤5:用手把头发塞进去就行,但是要记住,要用手把头发塞进去,要有层次,这样他才能显得有点凌乱和。中发稍短如何扎包包头?先扎个马尾辫。如果你想变得可爱,那就尽量把它扎得高一点。也可以斜着绑。而且绑高了有助于包包定型,不容...

TOP