英文:
Go - Divide big.Float
问题
我正在处理需要使用big.Float
类型的数字,并且需要对它们进行除法运算。我知道big.Int
有一个.Div()
函数,但如果我没记错的话,它会截断值并且丢失使用big.Float
时的精度。
相关代码
func e(prec int64) (res *big.Float) {
res = big.NewFloat(float64(1.0))
base := big.NewInt(prec)
for i := base; i.Cmp(big.NewInt(int64(0))) == 1; _ = i.Sub(i, big.NewInt(1)) {
d := big.NewFloat(float64(1.0))
_ = d.Div(fact(i)) // 这里有错误
res.Add(d)
}
return
}
英文:
I'm dealing with numbers that require a big.Float
type, and I need to divide them. I'm aware that big.Int
has a .Div()
function, but if I'm correct, that truncates the value and loses the precision I get from using big.Float
.
Relevant code
func e(prec int64) (res *big.Float) {
res = big.NewFloat(float64(1.0))
base := big.NewInt(prec)
for i := base; i.Cmp(big.NewInt(int64(0))) == 1; _ = i.Sub(i, big.NewInt(1)) {
d := big.NewFloat(float64(1.0))
_ = d.Div(fact(i)) // error here
res.Add(d)
}
return
}
答案1
得分: 34
使用Float.Quo进行big.Float
的除法运算:
x, y := big.NewFloat(10), big.NewFloat(3)
z := new(big.Float).Quo(x, y)
http://play.golang.org/p/GRPAKQNkq0
英文:
Use Float.Quo for big.Float
division:
x, y := big.NewFloat(10), big.NewFloat(3)
z := new(big.Float).Quo(x, y)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论