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