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"
相关文章
相关标签/搜索