好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Mysql 乘法除法精度不一致問題(除法后四位小數(shù))

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

熱門標(biāo)簽:機(jī)器人打電銷電話 上海市三維地圖標(biāo)注 博樂電銷機(jī)器人 云南大數(shù)據(jù)外呼系統(tǒng) 400電話到哪辦理優(yōu)惠 南寧外呼系統(tǒng)招商 怎么更改高德地圖標(biāo)注 電話機(jī)器人是電腦呼號嗎 鄭州網(wǎng)絡(luò)外呼系統(tǒng)價(jià)錢

問題

今天在寫項(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)行測試

測試

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

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

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

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

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

答案

首先感謝其他前輩對問題的解答和指點(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位精度

測試

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í)我們再測試

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

總結(jié)

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

您可能感興趣的文章:
  • 一起因MySQL時(shí)間戳精度引發(fā)的血案分析

標(biāo)簽:白銀 寧夏 恩施 澳門 益陽 秦皇島 杭州 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql 乘法除法精度不一致問題(除法后四位小數(shù))》,本文關(guān)鍵詞  Mysql,乘法,除法,精度,不一致,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql 乘法除法精度不一致問題(除法后四位小數(shù))》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql 乘法除法精度不一致問題(除法后四位小數(shù))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 一整集都在do的动漫| 最新福利小视频在线播放| 欧美孕交videosfree巨大| 99久久就热视颖精品98| 一本色道久久综合一区春日野| 天天狠天天透| 公交车揉捏大乳呻吟喘娇| 女人高潮冒白浆喷水| 久久影院精品| 日本jizz在线播放| 午夜丁香婷婷| 国产精品久久久久精品三级97| 美女张开腿给男人桶爽久久软件| 古代三级吃奶视频| 91伊人| 一级做a爱过程免费视频高清| 腿间含着一根玉势H| 俺去啦网婷婷| 麻豆三级电影| 国产精品一二三产区区别9987 | 日韩a片| 亚洲精品久久久久中文字幕欢迎你 | 一级a一级a爰片免费免会永久| 韩漫网站| 两夫共一女呻吟| 雨后小故事gif完整版| 肉肉的各种姿势高H细文最新章节| 国产学生粉嫩无套进| 国产哺乳奶水91在线播放| xo欧美性另类| 亚洲一区在线播放| 井川里予被草二十分钟视频| 国产一级做a爱免费高潮小说| 灌醉国产AV精品一区二区| 丰满老**毛片| 6一10周岁毛片在线| 免费无码婬片AAAA片在线蜜芽| 欧美成人做爰高潮片免费观看6季| 被两个男人同时前后做| 炮灰的自我修养| 欧美在线激情视频|