通過函數(shù)如何將golang?float64?保留2位小數(shù)(方法匯總)
通過函數(shù)將golang float64 保留2位小數(shù)
任何一種語言在做浮點(diǎn)數(shù)計(jì)算后,都存在計(jì)算結(jié)果的精度問題,例如用golang從mysql數(shù)據(jù)庫查出來的兩個decimal數(shù)值相加減后,期結(jié)果肯定也是兩位小數(shù),但golang計(jì)算出來的結(jié)果就會有很多位,例如:
1725577.59 - 1381341.21 = 344236.3800000001
結(jié)果會出現(xiàn)10位小數(shù),這個結(jié)果肯定不是我們想要的,我們只要結(jié)果的后兩位,并且后兩位的結(jié)果也是準(zhǔn)確的
344236.38
這是就如何做到golang float64 計(jì)算后保留2位小數(shù)
func Decimal(num float64) float64 { num, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", num), 64) return num }
golang之float類型保留小數(shù)點(diǎn)后2位
value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", 0.2223), 64) fmt.print(value)
go語言中float64 保留2位小數(shù)
func Decimal(value float64) float64 { ? ? return math.Trunc(value*1e2+0.5) * 1e-2 }
加上 0.5是為了四舍五入,想保留幾位小數(shù)的話把2改掉即可。
這個版本有個關(guān)于浮點(diǎn)型數(shù)精度的問題,經(jīng)常會出現(xiàn) 13.0000000001類似的結(jié)果。
下面的是先通過Sprintf保留兩位小數(shù),再轉(zhuǎn)成float64.
func Decimal(value float64) float64 { ?? ?value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64) ?? ?return value }
到此這篇關(guān)于通過函數(shù)將golang float64 保留2位小數(shù)的文章就介紹到這了,更多相關(guān)golang float64 保留2位小數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang struct 實(shí)現(xiàn) interface的方法
這篇文章主要介紹了golang struct 實(shí)現(xiàn) interface的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Go語言中init函數(shù)與匿名函數(shù)使用淺析
這篇文章主要介紹了Go語言中init函數(shù)與匿名函數(shù)使用淺析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01一文帶大家了解Go語言中的內(nèi)聯(lián)優(yōu)化
內(nèi)聯(lián)優(yōu)化是一種常見的編譯器優(yōu)化策略,通俗來講,就是把函數(shù)在它被調(diào)用的地方展開,這樣可以減少函數(shù)調(diào)用所帶來的開銷,本文主要為大家介紹了Go中內(nèi)聯(lián)優(yōu)化的具體使用,需要的可以參考下2023-05-05