Frage

Diese Frage hat hier bereits eine Antwort:

Ich habe diesen C -Code.

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}

Ich möchte wissen, warum meine Variable 'T' immer Null ist (in der Printf -Funktion)?

War es hilfreich?

Lösung

Weil in diesem Ausdruck

t = (1/100) * d;

1 und 100 sind ganzzahlige Werte, ganzzahlige Divisionen.

t = (0) * d;

Sie müssen das zu einem solchen Schwimmer machen

t = (1.0/100.0) * d;

Möglicherweise möchten Sie das auch damit tun

k = n / 3.0;

Andere Tipps

Sie verwenden Integer Division, und 1/100 wird in der Ganzzahlabteilung immer auf Null runden.

Wenn Sie eine schwimmende Punktabteilung durchführen und das Ergebnis einfach abschneiden möchten, können Sie sicherstellen, dass Sie stattdessen schwimmende Pointer -Literale verwenden, und D wird implizit für Sie konvertiert:

t = (int)((1.0 / 100.0) * d);

Ich denke, es ist wegen von

t = (1/100) * d;

1/100 als Ganzzahl Division = 0

dann ist 0 * d immer gleich 0

Wenn Sie 1.0/100.0 tun, denke ich, dass es richtig funktioniert

Die Inhaltsdatenbank wird erstellt, wenn eine Webanwendung erstellt wird.Es kann jedoch mehr als ein Inhaltsdatenbanken in einer Webanwendung vorhanden sein, da mehr als eine Site-Sammlung sein kann.Jede Site-Kollektion kann maximal eine Datenbank haben, aber mehr als eine Site-Sammlung kann dieselbe Inhaltsdatenbank teilen.Dies ist in Moss, SP 2010 der Fall, ist derzeit auch in SP 2013

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top