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)
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。