2010-02-09 5 views

Répondre

3

Le second devrait être

var cost1 = (int)(amount * 1000); 

Vous devez multiplier avec 1000, puis convertir le résultat. Dans votre exemple, vous convertissez d'abord, puis vous multipliez.

Voir Operator precedence and associativity

15

Essayez (int)(amount*1000). Dans le Convert, les crochets appliquent la priorité, mais jettent (int) l'emporte sur la multiplication - de sorte que vous avez en cours: ((int)amount)*1000, qui complète (au cours de la distribution) à 9.

En particulier, voir « 7.2.1 priorité des opérateurs et associativité » dans la spécification MS, qui définit la distribution avant la multiplication:

  • 7,5: primaire: xy f (x) a [x] x ++ X- nouvelle valeur par défaut typeof vérifié délégué décoché
  • 7,6: unaire : + -! ~ ++ x -X (T) x
  • 7.7: multiplicatif: * /%
  • etc
2

Je me demande si la question precedence? Essayez ceci:

(int)(amount*1000);