首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >big.Rat的平方根有一个简单的方法吗?

big.Rat的平方根有一个简单的方法吗?
EN

Stack Overflow用户
提问于 2022-01-15 17:00:28
回答 1查看 209关注 0票数 1

我需要找到一个big.Rat的平方根。有没有办法做到这一点而不失去(已经存在)的准确性?

例如,我可以把分子和分母转换成浮子,得到平方根,然后把它转换回来.

代码语言:javascript
复制
func ratSquareRoot(num *big.Rat) *big.Rat {
    f, exact := num.Float64() //Yuck! Floats!
    squareRoot := math.Sqrt(f)
    var accuracy int64 = 10 ^ 15 //Significant digits of precision for float64
    return big.NewRat(int64(squareRoot*float64(accuracy)), accuracy) 
    // ^ This is now totally worthless. And also probably not simplified very well.

}

...but,这将消除使用rational的所有准确性。有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-15 17:12:30

big.Float类型有一个.Sqrt(x)操作,并处理明确定义目标精度的操作。我尝试使用该方法,并将结果转换为Rat,在您的问题中使用相同的操作,只操作big.Int值。

代码语言:javascript
复制
    r := big.NewRat(1, 3)

    var x big.Float
    x.SetPrec(30) // I didn't figure out the 'Prec' part correctly, read the docs more carefully than I did and experiement
    x.SetRat(r)

    var s big.Float
    s.SetPrec(15)
    s.Sqrt(&x)

    r, _ = s.Rat(nil)
    fmt.Println(x.String(), s.String())
    fmt.Println(r.String(), float64(18919)/float64(32768))

游乐场

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70723547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档