我正在学习 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)
...我正在寻找的答案是整数或浮点数。我怎么得到它?
谢谢你的帮助!
为了扩展迭戈的答案,你有这条线
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。