如何获得大整数的自然对数

时间:2019-11-05 23:03:56

标签: go biginteger logarithm

我正在尝试将字符串转换为整数,然后计算其日志。 我的第一种方法是使用strconv库转换字符串,但是在转换字符串的长度时遇到了错误。

在那之后,我使用了math/big库,它运行良好。现在,我无法在生成的大整数上应用math.Log()

代码:

package main

import (
    "fmt"
    "math"
    "math/big"
)

func main() {
    bb := "11948904162160164791281681976941230184120142151411311314211115130161285142991119211447"
    bi := big.NewInt(0)
    if _, ok := bi.SetString(bb, 10); ok {
        fmt.Println(math.Log(bi))
    } else {
        fmt.Printf("error parsing line %#v\n", bb)
    }

}

错误:

cannot use bi (type *big.Int) as type float64 in argument to math.Log

1 个答案:

答案 0 :(得分:1)

在极少数情况下,您需要的精度要比标准float64类型提供的精度更高。

但是,为了满足任何人可能遇到的任何“午夜疯狂的想法”(甚至是一些非常深入的科学研究!),Rob Pike的implementations of some operations with big floats可能是您现在可以通过Go获得的最好的选择。 log函数可以在here中找到。