Konstante gekürzt auf integer
Folgenden GEHEN Programm gibt die Fehlermeldung:
./fft.go:13: constant -6.28319 truncated to integer
./fft.go:13: cannot use -7 * k / N (type int) as type float64 in assignment
Programm:
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)
}
Warum kann ich einen int
in eine Art von float64
?
- Ich wirklich Graben diese SEHR schöne golang Fehlermeldungen ... Sie sind Menschen, die in der Diskussion, nicht nur Maschine im Chat mit Maschine ... was für eine Freude, im Vergleich zum schreiben in einer anderen Sprache ... und proaktive macht das schreiben golang code, viel mehr Spaß
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen
durch
Zitieren die spec:
Gehen, nutzt die statische Typisierung und nicht automatisch die Konvertierung zwischen numerischen Typen. Der Grund dafür ist wahrscheinlich, um zu vermeiden, dass einige Fehler. Zum Beispiel, welchen Wert und welchen Typ sollte
float64(2.5) * int(2)
Ertrag? Sollte das Ergebnis seinint(5)
?int(4)
?float64(5.0)
? Im Gehen, das ist nicht ein Problem. Die Go-FAQ hat mehr zu sagen auf dieser.@jnml weist darauf hin, dass in diesem Fall die folgende ist genug:
c := -2*math.Pi/float64(N)
ist genugc := ...
ist besser code, ich denke, es verwirrt die Antwort ein bisschen.float64
sind überflüssig undk*floatConst
können integer -k
- es ist eine "ideale" Zahl.