golang中浮点型底层存储原理和decimal使用方法

var price float32 = 39.29

 

 

 float64和float32类似,只是用于表示各部分的位数不同而已,其中:sign=1位,exponent=11位,fraction=52位,也就意味着可表示的范围更大了。

 

二、decimal类型

  由于golang中默认没有decimal类型,如果想使用decimal类型需要通过第三方包

go get github.com/shopspring/decimal

  decimal使用方式

package main

import (
	"fmt"
	"github.com/shopspring/decimal"
)

func main() {
	var v1 = decimal.NewFromFloat(0.1)
	var v2 = decimal.NewFromFloat(0.2)

	var v3 = v1.Add(v2)
	var v4 = v1.Sub(v2)
	var v5 = v1.Mul(v2)
	var v6 = v1.Div(v2)

	var v7 = decimal.NewFromFloat(3.4625)
	var data1 = v7.Round(1)
	var data2 = v7.Truncate(1)

	fmt.Println(v3, v4, v5, v6)
	fmt.Println(data1, data2)
}

  

 

posted @ 2021-10-05 20:30  专职  阅读(1004)  评论(0编辑  收藏  举报