golang整數與小數間的加減乘除

咱們假設你須要 整數與小數一塊兒進行運算,或者 整數除以整數 獲得小數這種運算

若是你使用了decimal, 那麼以後全部的運算你都必須使用decimal,

由於經過它計算出來的結果的類型通通爲decimal.Decimal,與float64和int沒法一塊兒運算。

使用過程以下:

  • 首先你須要安裝 decimal,
運行: go get github.com/shopspring/decimal
  • 在運算開始前,設置你須要的精確的小數位數,自動四捨五入
decimal.DivisionPrecision = 2 // 保留兩位小數,若有更多位,則進行四捨五入保留兩位小數

加法 Add

2.1 + 3 float和int相加
    var num1 float64 = 3.1
    var num2 int = 2
    d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))   
    // 這裏注意了,此時咱們使用一個浮點數 加上 一個整數
    // 這裏num2 是整數,因此咱們經過float64()將它強轉爲小數,而後進行計算便可,
    // 若是兩個都是小數則無需使用float64()
    // 若是是兩個整數也都無需使用float64(), 16/4=4, 16/5=3.2  他們的結果都是 decimal.Decimal 類型,能夠經過reflect.TypeOf()方法進行測試,

減法 Sub,乘法 Mul, 除法 Div 用法均與上述相似,再也不一一列舉。

在計算完成後,返回的數據類型爲decimal.Decimal,如你須要轉換爲常見的數據類型

好比,此時test的類型爲decimal.Decimal,你須要將起轉化爲float64

    test := decimal.NewFromFloat(16.25).Div(decimal.NewFromFloat(float64(8)))

    // 經過Float64() 方法來實現

    windLevel, _ := test.Float64()
    
    // 相似的方法還有 String(), 總之decimal提供了不少實用的數據工具,你們須要計算時能夠看看文檔或者源碼

    // Round() 能夠進行四捨五入
    NewFromFloat(5.45).Round(1).String() // output: "5.5"
相關文章
相關標籤/搜索