jari: Hilbert Matrix

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?

  1. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.