golang:为什么我得到 +Inf 而不是整数或浮点数?

Jim*_*yap 5 go

我正在学习 golang,致力于货币时间价值计算

我正在尝试计算周期数,说,双倍你的钱。我使用的公式是period = log(fv/pv) / log(1 + i)。到目前为止我所拥有的是......

package main
import (
    "fmt"
    "math"
)
var (
    interest,
    futureValue,
    period,
    presentValue float64
)
var rate float64 = interest / 100 //converts interest into decimal... interest / 100
var ratex float64 = 1 + interest //used for (1 + i)

func main() {
    numPeriod()
}
func numPeriod() {
    fmt.Println("Enter interest amount: ")
    fmt.Scanf("%g", &interest)
    fmt.Println("Enter present value: ")
    fmt.Scanf("%g", &presentValue)
    fmt.Println("Enter future value: ")
    fmt.Scanf("%g", &futureValue)
    var logfvpvFactor float64 = futureValue / presentValue
    var logi float64 = math.Log(ratex)
    var logfvpv float64 = math.Log(logfvpvFactor)
    period = logfvpv / logi
    fmt.Printf("Number of period/s is = %g\n", period)
}
Run Code Online (Sandbox Code Playgroud)

运行这个,我得到...

Number of period/s is = +Inf
Run Code Online (Sandbox Code Playgroud)

...我正在寻找的答案是整数或浮点数。我怎么得到它?

谢谢你的帮助!

Der*_*rek 5

为了扩展迭戈的答案,你有这条线

var ratex float64 = 1 + interest
Run Code Online (Sandbox Code Playgroud)

在定义兴趣之前,所以它是 0 并且 ratex 变为 1。然后你有这条线

var logi float64 = math.Log(ratex)
Run Code Online (Sandbox Code Playgroud)

由于 ratex 为 1,而 1 的对数为 0,因此 logi 变为 0。然后通过除以 logi 来定义周期,即 0,因此您将得到 +inf。

您应该做的是在获得兴趣的输入后将值分配给 ratex。