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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM