2017-07-20 3 views
-6

Dans ce code: Je pense queMoulage avec (double) ou "* 1.0"

int a = 10; 
int b = 3; 

double x = (double) a/b; 
double x = (1.0*a)/b; 

Le résultat semble être le même, ou est exatcly même, donc. J'avais l'habitude de lancer avec (double), mais pour une raison que je ne me souviens pas, je suis passé à utiliser "1.0 *"

Lequel de deux est préférable d'utiliser, ou autre chose?

+6

Quels sont les types 'a' et' b'? – azro

+1

Pourquoi seraient-ils différents? – shmosel

+2

C'est une question très mal posée. 'ou est exatcly la même chose, je pense que vous nous dites. Vous ne nous avez pas donné assez de code pour reproduire le problème. 'Pour une raison que je ne me souviens pas, je suis passé à utiliser" 1.0 * "' Qu'est-ce que cela signifie même? «Lequel de deux est préférable d'utiliser» définit «mieux». 'ou peu importe" pourquoi même ajouter cela? Cela nécessite une révision sérieuse pour être responsable. – tnw

Répondre

-1

Vous devriez utiliser le cast (double), cela rend le code plus lisible. Attention cependant, en supposant que vos valeurs a et b sont ints, vous risquez de ne pas obtenir le bon résultat car il peut afficher le résultat de 10/3 qui est 3.0. Je ne suis pas sûr si vous avez exécuté le programme pour vérifier cela, mais jouez avec.

+2

Non, il ne peut pas afficher le résultat. Il lance 'a'' double 'avant d'effectuer une division en virgule flottante (pour laquelle le résultat est bien sûr double). – Kayaman

+1

le résultat est le même, car la distribution est activée et non pas a/b. –

0

En supposant que les variables a et b sont de type int. Si vous faites

double x = (1.0*a)/b; 

alors vous ne faites pas une division entière. Lorsque vous multipliez ou divisez deux nombres et que l'un des nombres est un nombre à virgule flottante, vous obtenez un nombre à virgule flottante. Donc, 1.0 * a vous donnera un nombre flottant et ce sera 10.0. Vous divisez alors 10.0 par 3 et par conséquent le résultat sera un nombre à virgule flottante.

Identique à l'autre cas. Quand vous faites (doublez) a, alors la valeur de 'a' sera convertie en double et ensuite vous la diviserez avec b, ce qui vous donnera un nombre à virgule flottante. Les deux approches vous donneront la même réponse.

+1

Ya, je sais que le résultat est le même, mais ma question si est différent ne concerne pas le résultat. Il s'agit de bonnes pratiques. –