6

私はgolangを学び、お金の計算の時間価値に取り組んでいます

私はあなたのお金を2倍にするために言う期間の数を計算しようとしています。私が使用している式は、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)
}

これを実行すると、私は...

Number of period/s is = +Inf

...私が探していた答えは整数か浮動小数点数のどちらかです。どうすれば入手できますか?

ご協力いただきありがとうございます!

4

3 に答える 3

6

ディエゴの答えを拡張するには、次の行があります

var ratex float64 = 1 + interest

利子が定義される前なので、0 で ratex は 1 になります。次に、次の行があります。

var logi float64 = math.Log(ratex)

そして、ratex は 1 であり、1 の対数は 0 であるため、logi は 0 になります。次に、0 である logi で除算して期間を定義すると、+inf が得られます。

あなたがすべきことは、利子が何であるかについての入力を得た後で、ratex に値を代入することです。

于 2012-12-06T14:56:00.957 に答える
2

ratexの値を割り当てると、利息は0になります。したがって、値を増やすために必要な時間は無限大になります。あなたが欲しいものは:

func numPeriod() {
  fmt.Println("Enter interest amount: ")
    fmt.Scanf("%g", &interest)
    var ratex float64 = 1 + interest / 100 //used for (1 + i)
    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)
}
于 2012-12-06T08:51:10.103 に答える
1
(09:54) jnml@fsc-r550:~/src/tmp/SO/13739751$ cat main.go 
package main

import (
        "fmt"
        "math"
)

func main() {
        var i, pv, fv float64
        fmt.Println("Enter interest amount: ")
        fmt.Scanf("%g", &i)
        fmt.Println("Enter present value: ")
        fmt.Scanf("%g", &pv)
        fmt.Println("Enter future value: ")
        fmt.Scanf("%g", &fv)
        fmt.Printf("Number of period/s is = %g\n", math.Log(fv/pv)/math.Log(1+i))
}

(09:54) jnml@fsc-r550:~/src/tmp/SO/13739751$ go run main.go 
Enter interest amount: 
.1
Enter present value: 
100
Enter future value: 
200
Number of period/s is = 7.272540897341713
(09:54) jnml@fsc-r550:~/src/tmp/SO/13739751$ 
于 2012-12-06T08:58:23.360 に答える