2016-10-28 2 views
-3

Ich versuche, die Dezimalstellen nach der Anzahlzeigen mit dezimal C

#include <stdio.h> 

int main() { 

    int weight; 
    int miles; 
    int price; 

    printf("Enter the packages weight \n"); 
    scanf("%d", &weight); 

    printf("Enter how many miles to ship the package \n"); 
    scanf("%d", &miles); 

    if(weight <= 15) { 
     price = 15; 
    } 
    else { 
     price = (15 + ((weight - 15) * .5)); 
    } 
    if(miles % 500 == 0) { 
     price += (miles/500 * 10); 
    } 
    else { 
     price += ((miles/500)* 10) + 10; 
    } 


    printf("It will cost $%d to ship an item weighing %d pounds %d miles \n", price, weight, miles); 
    return 0; 
} 

für die price = (15+((weight-15)*.5)); zu zeigen, wenn ich in den Zahlen außerhalb der Konsole stecken sie die Dezimalstellen zeigt. Mir fehlt wahrscheinlich die einfachste Sache ...

+1

Ja, verwenden Sie ein 'double'. –

+0

Verwenden Sie in Ihrem 'printf' nicht'% d', wenn Sie Fließkommazahlen drucken möchten, verwenden Sie% f. –

+0

@SouravGhosh: Verwenden Sie Gleitkomma nie für Währungen oder andere genaue Berechnungen. – Olaf

Antwort

0

Sie sollten den Datentyp der Variablen price zu float (oder double) ändern, wenn Sie einige Bruchteil darin speichern möchten.

Da auch miles/500 einige Dezimalteil erstellen kann (und miles selbst kann Gleitkommazahlen sein!), Sollte es auch float oder double gemacht werden.

Schließlich, in den printf Argumente, vergessen Sie nicht, den Format-Spezifizierer %d zu ändern.

Bevorzugen Sie, einen Gleitkommadatentyp für alle Variablen zu verwenden, die bei einigen Berechnungen beteiligt sind, die gebrochene Zahlen ergeben könnten, da dies verständlicher ist. Wenn Sie den Dezimalteil in der Ausgabe nicht sehen möchten, legen Sie die Genauigkeit fest bis 0 (%.0f).

+0

Er sollte definitiv nicht (http://ideone.com/6X8ope) das tun. Es sei denn, Sie denken, dass es gesund ist, 3,65 plus 0,05 nicht gleich 3,70 zu haben! –

+0

Got thankyou – SureShoy

+0

@DavidSchwartz: Aber wir können den Unterschied der Ausdrücke nehmen, die wir vergleichen möchten und sehen, ob es sehr klein ist oder nicht. – skrtbhtngr