下面的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)
}为什么不能在float64类型中使用int?
发布于 2013-04-22 23:54:37
替换
var c float64 = (-2.0 * math.Pi * k) / N通过
var c float64 = (-2.0 * math.Pi * float64(k)) / float64(N)引用spec
当表达式或赋值中混合了不同的数值类型时,需要进行
转换。例如,int32和int不是同一类型,即使它们在特定的体系结构上可能具有相同的大小。
Go使用静态类型,不会在数值类型之间自动转换。原因可能是为了避免一些错误。例如,float64(2.5) * int(2)应该产生什么值和什么类型?结果应该是int(5)?int(4)?float64(5.0)?在Go中,这不是问题。Go常见问题有关于这个的more to say。
@jnml指出,在这种情况下,以下内容就足够了:
var c float64 = -2 * math.Pi / float64(N)https://stackoverflow.com/questions/16151199
复制相似问题