我正在尝试使用pi计算公式,并做到了:
package main
import (
"fmt"
"math"
)
func bbpformula() {
var result float64
for k := 0.0; k <= 100; k++ {
result += (1 / math.Pow(16.0, k) * ((4 / (8*k + 1)) - (2 / (8*k + 4)) - (1 / (8*k + 5)) - (1 / (8*k + 6))))
}
fmt.Println(result)
}
func main() {
bbpformula()
}
,输出为:
3.141592653589793
但是,我想要更多的数字,我尝试使用math / big包将变量设置为big。使用更简单的公式进行浮点运算,但是算术运算非常混乱且缓慢。
所以我的想法是在结果变量超载时(最大容量)覆盖结果变量,但是我不知道如何做到这一点!
有人可以向我解释如何完成吗?
编辑:尝试使用if结果> math.MaxFloat64,但是输出变为空
import (
"fmt"
"math"
)
func bbpformula() {
var result float64
var resultb float64
for k := 0.0; k <= 100; k++ {
result += (1 / math.Pow(16.0, k) * ((4 / (8*k + 1)) - (2 / (8*k + 4)) - (1 / (8*k + 5)) - (1 / (8*k + 6))))
if result > math.MaxFloat64 {
fmt.Println(result)
resultb += (1 / math.Pow(16.0, k) * ((4 / (8*k + 1)) - (2 / (8*k + 4)) - (1 / (8*k + 5)) - (1 / (8*k + 6))))
if resultb == math.MaxFloat64 {
fmt.Println(resultb)
result = 0
}
}
}
}
func main() {
bbpformula()
}
输出:
答案 0 :(得分:1)
尝试在MaxFloat32
软件包中使用MaxFloat64
或math
。喜欢,检查是否result > math.MaxFloat64
?