下面的 GO 程序給出了錯(cuò)誤:./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貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
代替
var c float64 = (-2.0 * math.Pi * k) / N
經(jīng)過(guò)
var c float64 = (-2.0 * math.Pi * float64(k)) / float64(N)
引用規(guī)范:
當(dāng)不同的數(shù)字類型混合在一個(gè)表達(dá)式或賦值中時(shí),需要進(jìn)行轉(zhuǎn)換。例如,int32 和 int 不是同一種類型,即使它們?cè)谔囟軜?gòu)上可能具有相同的大小。
Go 使用靜態(tài)類型并且不會(huì)在數(shù)字類型之間自動(dòng)轉(zhuǎn)換。原因可能是為了避免一些錯(cuò)誤。例如,應(yīng)該float64(2.5) * int(2)
產(chǎn)生什么值和什么類型?結(jié)果應(yīng)該是int(5)
? int(4)
? float64(5.0)
? 在 Go 中,這不是問(wèn)題。Go 常見問(wèn)題解答對(duì)此有更多說(shuō)明。
@jnml 指出,在這種情況下,以下內(nèi)容就足夠了:
var c float64 = -2 * math.Pi / float64(N)
- 1 回答
- 0 關(guān)注
- 262 瀏覽
添加回答
舉報(bào)
0/150
提交
取消