Question

Im essayant d'écrire quelque chose pour obtenir mes images pour afficher correctement. J'ai 2 chiffres « breedtePlaatje » et « hoogtePlaatje ». Quand je charge ces 2 vars avec les valeurs que je reviendrai « 800 » et « 500 » Je pense « VERH » soit (500/800) = 0625. Tho la valeur de VERH = 0 ..

Voici 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 belle aswell.

Était-ce utile?

La solution

int Dividing par int donne un int.

double verH = (hoogtePlaatje/breedtePlaatje);

Le côté droit de l'affectation est une valeur entière.

Changement breedtePlaatje et / ou hoogtePlaatje à double et vous obtiendrez la réponse que vous attendez.

Autres conseils

La division entière se traduira par un nombre entier d'être renvoyé comme résultat de la division.

Vous avez besoin d'un des paramètres de la division à un flotteur pour que le résultat soit un flotteur. Vous pouvez le faire en jetant un d'entre eux à un flotteur.

double verH = (double)hoogtePlaatje/breedtePlaatje;

ou

double verH = hoogtePlaatje/(double)breedtePlaatje;

Voir la spécification C # concernant la division .

Lorsque vous divisez deux entiers, C # utilise division entière , où la partie décimale est mis au rebut . Dans votre cas, vous obtenez:

500 / 800 = 0 + 5/8 

Ce qui, en rejetant la partie décimale, donne:

500 / 800 = 0

Pour obtenir la division à virgule flottante, CAST un des arguments soit double, float ou decimal en fonction du niveau de précision dont vous avez besoin, ce qui provoquera l'autre argument à convertir implicitement au même type et la division réalisée à l'aide règles en virgule flottante à la place de règles entières, par exemple

double result = (double)breedtePlaatje  / hoogtePlaatje ;

Je ne l'ai jamais utilisé C #, mais probablement vous aurez besoin de jeter l'une des variables de doubler, comme ceci:

double verH = (double)hoogtePlaatje/breedtePlaatje;

Essayez ceci:

double verH = double (hoogtePlaatje) / breedtePlaateje;

Si vous divisez un int par un int, vous obtiendrez une réponse tronquée. Cast un d'eux à un double, et toute la division se fera en double.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top