package main
import (
"fmt"
"strconv"
"math/big"
"github.com/shopspring/decimal"
)
func main() {
//32位浮点,错误
var a1,b1,c1 float32
a1 = 1.69
b1 = 1.7
c1 = a1*b1
fmt.Println(c1)
//64位浮点,错误
var a2,b2,c2 float64
a2 = 1.69
b2 = 1.7
c2 = a2 * b2
fmt.Println(c2)
//大数据浮点,错误
a3 := new(big.Float).SetFloat64(1.69)
b3 := new(big.Float).SetFloat64(1.7)
c3 := new(big.Float).Mul(a3, b3)
fmt.Println(c3)
//高精度,正确
a4 := decimal.NewFromFloat(1.69)
b4 := decimal.NewFromFloat(1.7)
c4 := a4.Mul(b4)
fmt.Println(c4)
//四舍五入,正确
var f float32
f = 2.872999999
//精度小数点后4位
s := fmt.Sprintf("%.4f", f)
float, _ := strconv.ParseFloat(s, 32)
f = float32(float)
fmt.Println(f)
}
输出:
2.8730001
2.8729999999999998
2.8729999999999998
2.873
2.873
共有条评论 网友评论