golang int 转float 强转和高精度转操作
golangint转float
方法一:
强转:
代码如下:
import"fmt" funcmain(){ varmoneyint money=1 fmt.Println(float64(money)/float64(100)) }
输出结果:0.01
方法二:
高精度转:
代码如下:
import( "fmt" "math/big" "strconv" ) funcmain(){ totalAmount:=1 numrator,_:=new(big.Float).SetPrec(uint(1024)).SetString(strconv.Itoa(totalAmount)) denominator:=big.NewFloat(100) denominator1:=numrator.Quo(numrator,denominator) fmt.Println(denominator1) }
输出结果:0.01
补充:golangfloat32/64与[]byte互转
网络协议开发中经常需要将int、float、bool等转为二进制数据,float32、64与[]byte处理:
import( "encoding/binary" "math" ) funcFloat32ToByte(floatfloat32)[]byte{ bits:=math.Float32bits(float) bytes:=make([]byte,4) binary.LittleEndian.PutUint32(bytes,bits) returnbytes } funcByteToFloat32(bytes[]byte)float32{ bits:=binary.LittleEndian.Uint32(bytes) returnmath.Float32frombits(bits) } funcFloat64ToByte(floatfloat64)[]byte{ bits:=math.Float64bits(float) bytes:=make([]byte,8) binary.LittleEndian.PutUint64(bytes,bits) returnbytes } funcByteToFloat64(bytes[]byte)float64{ bits:=binary.LittleEndian.Uint64(bytes) returnmath.Float64frombits(bits) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。