我正在尝试将字符串转换为整数,然后计算其日志。我的第一种方法是使用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
在极少数情况下,您需要的精度要比标准float64
类型提供的精度高。
但是为了满足任何人可能会遇到的任何“午夜疯狂的想法”(甚至是一些非常深入的科学研究!),Rob Pike的implementations of some operations with big floats可能是您现在所能得到的最好的。可以找到log
功能。