Golang Float高精度计算,无误差

2020-01-12  本文已影响0人  VANCY_2ddc

Golang Float乘Float高精度,转Int高精度。

使用big.Float

bigF1 := new(big.Float).SetFloat64(f1)

bigF2 := new(big.Float).SetFloat64(f2)

mul := new(big.Float).Mul(bigF1, bigF2)

转Int,先用上面的方法转为big.Float,再用.String转为字符串。

new(big.Int).SetString(bigFloat, 10) // 即可转为big.Int

// big.Int可转为常用的int类型。

// big.Float可转为常用的Float类型。

// big.Float不能直接转为Int类型。

func Sub(x float64, y float64, more ...float64) float64 {

  floatX := new(big.Float).SetFloat64(x)

  floatY := new(big.Float).SetFloat64(y)

  result := new(big.Float).Sub(floatX, floatY)

  if len(more) > 0 {

      for _, m := range more {

        floatM := new(big.Float).SetFloat64(m)

        result = new(big.Float).Sub(result, floatM)

}

}

  f, _ := strconv.ParseFloat(result.String(), 64)

  return f

}

上一篇 下一篇

猜你喜欢

热点阅读