如何覆盖重载变量

时间:2018-12-22 15:54:50

标签: go

我正在尝试使用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()

}

输出:

1 个答案:

答案 0 :(得分:1)

尝试在MaxFloat32软件包中使用MaxFloat64math。喜欢,检查是否result > math.MaxFloat64