2017-02-26 2 views
-2

Tout fonctionne ici comme je le souhaite sauf la fonction "tipConvert (tip)". Je veux qu'il change un nombre, tel que 15, en 0,15 qui serait la représentation décimale d'un pourcentage.Calcul de l'astuce - changer un nombre en une représentation décimale

#include <stdio.h> 

float tipConvert(int tip); 

int main() 
{ 
    char value; 
    int intValue tip; 
    float bill, result; 

    intValue = 1; 

    while(intValue == 1) 
    { 
     printf("Would you like to calculate a tip: y or n?\n"); 
     scanf("%s", &value); 
     if(value == 'y') 
     { 
      printf("Enter the bill amount:\n"); 
      scanf("%f", &bill); 
      printf("Enter the tip amount as an integer:\n"); 
      scanf("%i", &tip); 
      result = tipConvert(tip)*bill; 
      printf("Tip for %.2f is %.2f\n", bill,result); 
     } 
     else if(value == 'n') 
     { 
      printf("Thank you for using Tip Calculator."); 
      break; 
     } 
     else 
      printf("Please select y or n.\n"); 

    } 
    return 0; 
} 

float tipConvert(int tip) 
{ 
    return tip/100; 
} 
+0

Veuillez essayer de rendre vos titres de questions moins génériques. Qu'est-ce que "le calcul"? –

+0

Vous êtes dividint 2 ints; et le résultat est stocké en tant que int. Par conséquent, lorsque le résultat de votre division est quelque chose comme 0.xx, il arrondit à zéro. Par conséquent, faites tip/100.0: cela devrait fonctionner. –

Répondre

1

Le problème est qu'un entier ne peut pas stocker des nombres décimaux, et lorsque vous appelez la pointe/100, le compilateur voit une division entière et retourne un int (dans votre exemple 0) et moulages à flotteur ensuite. La méthode la plus simple pour dire au compilateur d'utiliser une division flottante est de diviser par un littéral flottant au lieu d'un littéral int en utilisant 100.0f. Cela devrait réparer la division.
Vous pouvez également lancer la pointe pour flotter avant.

+0

Ne serait-il pas plus simple de lire un flotteur pour la pointe? – stark

+0

Bien sûr, vous pouvez faire cela, vous pouvez également définir le paramètre pour flotter et passer un int, qui est ensuite lancé pour flotter. –