Pardonnez-moi si c'est une question naïve, mais je suis perdu aujourd'hui.
J'ai un calcul de division simple comme suit:
double returnValue = (myObject.Value / 10);
La valeur est un entier dans l'objet.
Je reçois un message indiquant une perte possible de fraction. Cependant, lorsque je change le double en un int, le message disparaît.
Des pensées sur pourquoi cela arriverait?
Réponses:
Lorsque vous divisez deux entiers en une valeur à virgule flottante, la partie de fraction est perdue. Si vous lancez l'un des éléments en flottant, vous n'obtiendrez pas cette erreur.
Par exemple, transformez 10 en 10,0
la source
Vous faites une division entière si
myObject.Value
est un entier , puisque les deux côtés du/
sont de type entier.Pour effectuer une division en virgule flottante, l'un des nombres de l'expression doit être de type virgule flottante. Ce serait vrai si myObject.Value était un double ou l'un des éléments suivants:
la source
Un entier divisé par un entier renverra votre entier. Convertissez Valeur en double ou divisez par 10,0.
la source
En supposant qu'il
myObject.Value
s'agit d'unint
, l'équationmyObject.Value / 10
sera une division entière qui sera ensuite convertie en double.Cela signifie que myObject.Value étant égal à 12, returnValue deviendra 1, et non 1,2.
Vous devez d'abord convertir la ou les valeurs:
Cela aboutirait à la valeur correcte 1.2, au moins aussi correcte que les doubles le permettent compte tenu de leurs limites, mais cela est discuté ailleurs sur SO, presque à l'infini :-).
la source
Je pense que puisque myObject est un int, vous devriez
la source