常量截断为整数

下面的 GO 程序给出了错误:


./fft.go:13: constant -6.28319 truncated to integer

./fft.go:13: cannot use -7 * k / N (type int) as type float64 in assignment

程序:


package main


import (

    "math"

    "fmt"

)


func main() {

    fmt.Println("Hello world ",math.E)


    var k, N int = 1, 10

    var ans float64 = 0

    var c float64 = (-2.0 * math.Pi * k) / N

    x := make([]float64,N)

    for i := 0; i < len(x); i++ {

        x[i] = 1

    }

    ans = 0

    for i := 0; i < N; i++ {

        ans += x[i] * math.E

    }

    fmt.Println(ans)

}

为什么我不能使用intin 的类型float64?


跃然一笑
浏览 215回答 1
1回答

慕码人8056858

代替var&nbsp;c&nbsp;float64&nbsp;=&nbsp;(-2.0&nbsp;*&nbsp;math.Pi&nbsp;*&nbsp;k)&nbsp;/&nbsp;N经过var&nbsp;c&nbsp;float64&nbsp;=&nbsp;(-2.0&nbsp;*&nbsp;math.Pi&nbsp;*&nbsp;float64(k))&nbsp;/&nbsp;float64(N)引用规范:当不同的数字类型混合在一个表达式或赋值中时,需要进行转换。例如,int32 和 int 不是同一种类型,即使它们在特定架构上可能具有相同的大小。Go 使用静态类型并且不会在数字类型之间自动转换。原因可能是为了避免一些错误。例如,应该float64(2.5) * int(2)产生什么值和什么类型?结果应该是int(5)?&nbsp;int(4)?&nbsp;float64(5.0)?&nbsp;在 Go 中,这不是问题。Go 常见问题解答对此有更多说明。@jnml 指出,在这种情况下,以下内容就足够了:var&nbsp;c&nbsp;float64&nbsp;=&nbsp;-2&nbsp;*&nbsp;math.Pi&nbsp;/&nbsp;float64(N)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go