La Division en c# ne va pas la façon dont je l'attends
Im essayant d'écrire quelque chose pour obtenir mes images pour les afficher correctement.
J'ai 2 numéros de "breedtePlaatje" et "hoogtePlaatje". Lorsque je charge ces 2 vars avec les valeurs que j'obtiens en retour "800" et "500" j'attends "verH" (500 /800) = 0,625. Tho la valeur de verH = 0..
C'est le code:
int breedtePlaatje = Convert.ToInt32(imagefield.Width);
int hoogtePlaatje = Convert.ToInt32(imagefield.Height);
//Uitgaan van breedte plaatje
if (breedtePlaatje > hoogtePlaatje)
{
double verH = (hoogtePlaatje/breedtePlaatje);
int vHeight = Convert.ToInt32(verH * 239);
mOptsMedium.Height = vHeight;
mOptsMedium.Width = 239;
//Hij wordt te klein en je krijgt randen te zien, dus plaatje zelf instellen
if (hoogtePlaatje < 179)
{
mOptsMedium.Height = 179;
mOptsMedium.Width = 239;
}
}
Des conseils concernant mon approche serait joli aussi.
OriginalL'auteur Younes | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
Divisant int int donne un int.
La partie droite de l'affectation est une valeur entière.
Changement breedtePlaatje et/ou hoogtePlaatje le double et vous obtiendrez la réponse que vous attendez.
OriginalL'auteur Arve
Division entière aura pour résultat un nombre Entier d'être retourné en tant que division de résultat.
Vous avez besoin de l'un des paramètres de la division à un flotteur dans l'ordre pour que le résultat soit un float. Vous pouvez le faire par la coulée de l'un d'eux à un flotteur.
Ou
Voir le C# spec au sujet de la division.
OriginalL'auteur Oded
D'une division de deux entiers, C# utilise division entière, où la partie fractionnaire est rejetée. Dans votre cas, vous obtenez:
Qui, en rejetant la partie fractionnaire, donne:
Pour obtenir floating point de la division, la fonte de l'un des arguments soit
double
,float
oudecimal
selon le niveau de précision dont vous avez besoin, ce qui va provoquer l'autre argument pour être implicitement converti dans le même type et de la division effectuée à l'aide de virgule flottante règles au lieu d'un entier règles, par exempleOriginalL'auteur Greg Beech
Je n'ai jamais utilisé le C#, mais probablement vous aurez besoin de jeter l'une des variables à double, comme ceci:
OriginalL'auteur kd35a
Essayez ceci:
Si vous diviser un entier par un entier (int), vous obtiendrez une réponse tronquée. Fonte de l'un d'entre eux jusqu'à un lit double, et l'ensemble de la division sera fait comme double.
OriginalL'auteur Tarydon