下面的 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 mainimport ( "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?
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
代替
var c float64 = (-2.0 * math.Pi * k) / N
经过
var c float64 = (-2.0 * math.Pi * float64(k)) / float64(N)
引用规范:
当不同的数字类型混合在一个表达式或赋值中时,需要进行转换。例如,int32 和 int 不是同一种类型,即使它们在特定架构上可能具有相同的大小。
Go 使用静态类型并且不会在数字类型之间自动转换。原因可能是为了避免一些错误。例如,应该float64(2.5) * int(2)
产生什么值和什么类型?结果应该是int(5)
? int(4)
? float64(5.0)
? 在 Go 中,这不是问题。Go 常见问题解答对此有更多说明。
@jnml 指出,在这种情况下,以下内容就足够了:
var c float64 = -2 * math.Pi / float64(N)
- 1 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消