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

问题描述 投票:1回答:1

我正在尝试将字符串转换为整数,然后计算其日志。我的第一种方法是使用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
go biginteger logarithm
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.