最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年03月07日 09:50:07   作者:Siam  
這篇文章主要介紹了Mysql 乘法除法精度不一致,除法后四位小數(shù),本文通過(guò)問(wèn)題分析實(shí)例代碼講解,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

問(wèn)題

今天在寫項(xiàng)目功能的時(shí)候,有一個(gè)統(tǒng)計(jì)金額的情況,然后需要進(jìn)行單位轉(zhuǎn)換,所以寫下了大概如下功能的語(yǔ)句,但得到的數(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è)試 ,防止其他語(yǔ)句對(duì)結(jié)果產(chǎn)生干擾。

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

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

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

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

答案

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

文明之所以能延續(xù),是因?yàn)樗鼈冇杏洃?。希望文章也能幫到更多的朋友?/p>

  • 除法的精度默認(rèn)是小數(shù)點(diǎn)后4位
  • 乘法的精度使用 操作數(shù)的精度和 的方式來(lái)判斷,如例子中的 1*0.01 精度分別是小數(shù)點(diǎn)后0位和2位,那么就是 0+2 =2 結(jié)果也將使用2位精度

測(cè)試

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

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

除法使用2位精度

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

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

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

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

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

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

mysql相關(guān)說(shuō)明文獻(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é)果

所以我們還可以通過(guò)修改默認(rèn)變量,來(lái)改變除法的默認(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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子

    Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子

    這篇文章主要介紹了Linux下啟動(dòng)多個(gè)mysql服務(wù)器例子,本文還包括了3個(gè)可能遇到的問(wèn)題及解決方法,需要的朋友可以參考下
    2014-07-07
  • MySQL詳解進(jìn)行JDBC編程與增刪改查方法

    MySQL詳解進(jìn)行JDBC編程與增刪改查方法

    JDBC是指Java數(shù)據(jù)庫(kù)連接,是一種標(biāo)準(zhǔn)Java應(yīng)用編程接口( JAVA API),用來(lái)連接 Java 編程語(yǔ)言和廣泛的數(shù)據(jù)庫(kù)。從根本上來(lái)說(shuō),JDBC 是一種規(guī)范,它提供了一套完整的接口,允許便攜式訪問(wèn)到底層數(shù)據(jù)庫(kù)
    2022-06-06
  • 深入理解mysql各種鎖

    深入理解mysql各種鎖

    大家好,本篇文章主要講的是深入理解mysql各種鎖,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • mysql數(shù)據(jù)庫(kù) 主從復(fù)制的配置方法

    mysql數(shù)據(jù)庫(kù) 主從復(fù)制的配置方法

    本文主要介紹 mysql數(shù)據(jù)庫(kù) 主從負(fù)責(zé)的配置方法,在做數(shù)據(jù)庫(kù)開發(fā)的時(shí)候有時(shí)候會(huì)遇到,這里做出詳細(xì)流程,大家可以參考下
    2016-07-07
  • 關(guān)于MySQL主從復(fù)制的幾種復(fù)制方式總結(jié)

    關(guān)于MySQL主從復(fù)制的幾種復(fù)制方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于MySQL主從復(fù)制的幾種復(fù)制方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MySQL select count(*)計(jì)數(shù)很慢優(yōu)化方案

    MySQL select count(*)計(jì)數(shù)很慢優(yōu)化方案

    這篇文章主要介紹了MySQL select count(*)計(jì)數(shù)很慢優(yōu)化方案,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Mysql高效分頁(yè)詳解

    Mysql高效分頁(yè)詳解

    這篇文章主要為大家詳細(xì)介紹了Mysql高效分頁(yè)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • mysql sql99語(yǔ)法 內(nèi)連接非等值連接詳解

    mysql sql99語(yǔ)法 內(nèi)連接非等值連接詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于mysql sql99語(yǔ)法 內(nèi)連接非等值連接的相關(guān)知識(shí)點(diǎn)文章,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • MySQL命令執(zhí)行sql文件的方法小結(jié)

    MySQL命令執(zhí)行sql文件的方法小結(jié)

    本文給大家分享MySQL命令執(zhí)行sql文件的兩種方法,每種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    MySql2.cpp : Defines the entry point for the console application.
    2009-07-07

最新評(píng)論

文昌市| 罗山县| 利川市| 乌鲁木齐县| 博白县| 南召县| 化州市| 开江县| 济宁市| 珠海市| 定襄县| 常宁市| 德阳市| 襄城县| 邓州市| 新建县| 景洪市| 阿鲁科尔沁旗| 宁晋县| 乌拉特中旗| 岚皋县| 诸暨市| 花莲市| 容城县| 桃江县| 黄梅县| 嵊泗县| 龙州县| 屏南县| 上饶县| 绵竹市| 遵义市| 朝阳区| 仙居县| 通州市| 巴里| 青冈县| 盐亭县| 石棉县| 邹城市| 类乌齐县|