电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Mysql 乘法除法精度不一致問題(除法后四位小數(shù))

瀏覽:10日期:2023-10-16 10:32:20

問題

今天在寫項(xiàng)目功能的時(shí)候,有一個(gè)統(tǒng)計(jì)金額的情況,然后需要進(jìn)行單位轉(zhuǎn)換,所以寫下了大概如下功能的語句,但得到的數(shù)據(jù)為小數(shù)點(diǎn)后4位精度,正常我們只需要2位就足夠。

select total_fee / 100 from orders

繼續(xù)排查尋找資料,進(jìn)行精度轉(zhuǎn)換,找了一圈的資料都不太滿意,繼續(xù)進(jìn)行測(cè)試

測(cè)試

測(cè)試bug和未知情況,我們一定要 最小復(fù)現(xiàn),精簡(jiǎn)測(cè)試 ,防止其他語句對(duì)結(jié)果產(chǎn)生干擾。

select 1 / 100;// 得到 0.0100select 1 * 0.01;// 得到 0.01

并且在3/4臺(tái)設(shè)備上運(yùn)行,不同mysql版本環(huán)境都是這樣子的結(jié)果。

所以初步得知 Mysql中,乘法和除法對(duì)小數(shù)點(diǎn)后的精度不一致

在國內(nèi)的論壇中沒有找到合適的資料,于是到國外論壇尋找,提問,交流。

答案

首先感謝其他前輩對(duì)問題的解答和指點(diǎn),我們也將盡量詳細(xì)地記錄問題的排查。

文明之所以能延續(xù),是因?yàn)樗鼈冇杏洃洝OM恼乱材軒偷礁嗟呐笥选?/p> 除法的精度默認(rèn)是小數(shù)點(diǎn)后4位 乘法的精度使用 操作數(shù)的精度和 的方式來判斷,如例子中的 1*0.01 精度分別是小數(shù)點(diǎn)后0位和2位,那么就是 0+2 =2 結(jié)果也將使用2位精度

測(cè)試

select 1.00 * 0.01;// 結(jié)果 0.0100

符合上訴結(jié)論。感謝國外前輩指教。

除法使用2位精度

那么我們的問題 如果是要堅(jiān)持用除法解決,我們可以使用函數(shù)來進(jìn)行轉(zhuǎn)換精度,

CAST( @x / @y AS DECIMAL(m,n) )

DECIMAL的參數(shù)可以百度看這個(gè),基本創(chuàng)建過表結(jié)構(gòu)的都能明白。

@x和@y就是除數(shù)和被除數(shù)。

同時(shí)我還提出疑問,是否能在mysql里設(shè)置默認(rèn)除法精度,我們就可以不用每次sql都使用函數(shù)計(jì)算了。

前輩回復(fù):如果你不想有時(shí)候出現(xiàn)出乎意料的情況,那么需要每次都強(qiáng)制使用類型轉(zhuǎn)換。

mysql相關(guān)說明文獻(xiàn)

https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html

In division performed with /, the scale of the result when using two exact-value operands is the scale of the first operand plus the value of the div_precision_increment system variable (which is 4 by default). For example, the result of the expression 5.05 / 0.014 has a scale of six decimal places (360.714286).

除法的精度規(guī)則

由上面引用的文獻(xiàn)可知:當(dāng)使用兩個(gè)數(shù)值進(jìn)行計(jì)算時(shí),結(jié)果的精度由 第一個(gè)操作數(shù)的精度 + 系統(tǒng)變量div_precision_increment的值決定 ,如我們例子中的1 精度是0,系統(tǒng)變量精度是4位默認(rèn),所以得到的結(jié)果是4位精度

set div_precision_increment = 2;// 再運(yùn)行select 1 / 100; 得到 0.01 符合想要的結(jié)果

所以我們還可以通過修改默認(rèn)變量,來改變除法的默認(rèn)精度。

此時(shí)我們?cè)贉y(cè)試

select 1.0 / 100;// 結(jié)果 0.010 符合上文所述結(jié)論

總結(jié)

到此這篇關(guān)于Mysql 乘法除法精度不一致,除法后四位小數(shù)的文章就介紹到這了,更多相關(guān)mysql 乘法除法精度內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 营养师网,营养师考试时间,报名入口—网站首页 | 仿真植物|仿真树|仿真花|假树|植物墙 - 广州天昆仿真植物有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 食安观察网| 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 仪器仪表网 - 永久免费的b2b电子商务平台 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 技德应用| 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 潍坊大集网-潍坊信息港-潍坊信息网 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 昊宇水工|河北昊宇水工机械工程有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 四川成人高考_四川成考报名网 | 14米地磅厂家价价格,150吨地磅厂家价格-百科| 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 折弯机-刨槽机-数控折弯机-数控刨槽机-数控折弯机厂家-深圳豐科机械有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 |