Hilbert Matrix
jari
- sonstiges
3 MudGuard
ich habe folgenden code:
int i,j,n;
float zahl;
n=4;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
zahl=(1/(i+j-1));
printf("%f\n",zahl);
}
}
mit der formel, die bei zahl=... steht, sollten folgende ergebnisse in Gleitkommadarstellung ausgegeben werden, aber es wird immer 0.000000 ausgegeben!
1
1/2
1/3
1/4
1/5
1/6 usw bis
woran liegt das?
Hi,
int i,j,n;
float zahl;
zahl=(1/(i+j-1));
Auf der rechten Seite stehen lauter int-Werte. Die Rechnung wird also in int ausgeführt.
Das Ergebnis, welches außer im ersten Fall immer 0 ist, wird dann für die Zuweisung nach float gewandelt.
Sorge dafür, daß mindestens eine der Variablen rechts schon vorher auf float gecastet wird.
cu,
Andreas