为了账号安全,请及时绑定邮箱和手机立即绑定

常量截断为整数

常量截断为整数

Go
跃然一笑 2021-06-01 20:21:56
下面的 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)


查看完整回答
反对 回复 2021-06-07
  • 1 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信