Multiplier un int par un int pour donner un float renvoie 0 le langage est C


pmigbarros
lotacao_abs = (viagens[j].lotacao / 100) * navios[i].capacidade;

lotacao_absest un float, viagens[j].lotacaoest un intd'une structure (oui, il a la valeur correcte que j'ai vérifiée), navios[i].capacidadeest également un int(a également la valeur correcte que j'ai vérifiée).

Ce qui se passe, c'est que la valeur de lotacao_absest toujours 0. L'idée de cette partie du code est de me donner la valeur absolue au lieu du pourcentage, viajens[j].lotacaoa le pourcentage et navios[j].capacidadea la capacité maximale du navire, disons que le pourcentage est de 68% et la capacité maximale est 34,000, alors lotacao_absdevrait être 23,120, mais c'est plutôt le cas 0.

dbush

La sous viagens[j].lotacao/100- expression exécute une division entière. Donc, si viajens[j].lotacaoest inférieur à 100, le résultat sera 0.

L'un des arguments doit être de type virgule flottante pour effectuer une division en virgule flottante. La façon la plus simple de faire cela est d'utiliser 100.0une constante à virgule flottante au lieu de 100laquelle est une constante entière.

lotacao_abs=(viagens[j].lotacao/100.0) * navios[i].capacidade;

Articles connexes


Pourquoi la somme d'un int et d'un float est-elle un int?

chercher: Considérez le code suivant: float d = 3.14f; int i = 1; auto sum = d + i; Selon cppreference.com , idoit être converti en floatlorsqu'il est ajouté à d. Cependant, lorsque j'exécute le code, je trouve que sumc'est 4. Pourquoi cela se produit-il?

Multiplier int avec un résultat long c #

Dmitry Smirnov Se demander pourquoi. C # .Net 3.5 int a = 256 * 1024 * 1024; int b = 8; long c = b * a; Console.WriteLine(c);//<-- result is -2147483648 D'où vient ce moins? Jon Skeet D'où vient ce moins? Du débordement d'entier. Notez que votre code équivau

Combien de mémoire multiplier int par un double?

Kevin Combien de mémoire la multiplication d'un entier non signé 16 bits par un double et l'assignation à un autre entier 16 bits non signé prend-elle en C? Chargerait-il temporairement le résultat double dans un registre avant de l'assigner à int? Je fais de

WHERE id='2bar' pour le champ INT(11) renvoie un faux positif id=2

Barry Staes Comment s'assurer que MySQL ne trouve pas de faux positifs lorsqu'un caractère alphabétique est ajouté à une valeur entière ? Il s'avère qu'étant donné ce tableau : CREATE TABLE `mytable` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL )

Le langage C est-il un seul thread

bélier Satya Je lisais récemment "Le langage de programmation C" de Ritchie, j'ai remarqué que C est un langage à thread unique. Eh bien, je veux savoir quelle est la différence entre un langage à thread unique et un langage à plusieurs threads. Si C est un th

IValueConverter renvoie un tableau int

utilisateur7647348 salut je suis en train d'éditer un calendrier. Maintenant, je dois remplir le calendrier avec mes jours préférés. C'est ce que j'ai essayé et c'est le résultat object IValueConverter.Convert(object value, Type targetType, object parameter, C

Ouvrir un site par le langage du navigateur C#

UMUT GULACTI <div class="language"> <ul> <li> <asp:LinkButton Text="TR" CausesValidation="false" ID="lnktr_TR" Visible="true" runat="server" OnClick="lnktr_TR_Click"></asp:LinkButton> </li> <li> <asp:LinkButt

Multiplier un [int(x) pour x dans input().split()]

Rafael_O J'obtiens 2 nombres entiers et je veux les multiplier tout de suite. Je fais: X,Y = [int(x) for x in input().split()] Mais je ne sais pas vraiment comment les multiplier sans créer une nouvelle ligne et utiliser simplement une troisième variable comme