foo*_*oty 9 floating-point syntax-error go
以下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
Run Code Online (Sandbox Code Playgroud)
程序:
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)
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用int某种类型的float64?
scv*_*lex 12
更换
var c float64 = (-2.0 * math.Pi * k) / N
Run Code Online (Sandbox Code Playgroud)
通过
var c float64 = (-2.0 * math.Pi * float64(k)) / float64(N)
Run Code Online (Sandbox Code Playgroud)
引用规范:
在表达式或赋值中混合使用不同的数字类型时,需要进行转换.例如,int32和int的类型不同,即使它们在特定体系结构上可能具有相同的大小.
Go使用静态类型,不会自动在数字类型之间进行转换.原因可能是避免一些错误.例如,应该float64(2.5) * int(2)产生什么价值和什么类型?结果应该是int(5)? int(4)? float64(5.0)?在Go中,这不是问题.Go FAQ对此有更多的说法.
@jnml指出,在这种情况下,以下就足够了:
var c float64 = -2 * math.Pi / float64(N)
Run Code Online (Sandbox Code Playgroud)