Domanda

Nel tentativo di scrivere qualcosa per ottenere le mie immagini per mostrare correttamente. Ho 2 numeri "breedtePlaatje" e "hoogtePlaatje". Quando carico quei 2 Vars con i valori al mio ritorno "800" e "500" Mi aspetto "verh" essere (500/800) = 0,625. Tho il valore di verh = 0 ..

Questo è il codice:

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;
    }
}

Tutti i suggerimenti per quanto riguarda il mio approccio sarebbe bello pure.

È stato utile?

Soluzione

divisione int da int dà un int.

double verH = (hoogtePlaatje/breedtePlaatje);

Il lato destro della assegnazione è un valore intero.

Cambia breedtePlaatje e / o hoogtePlaatje di raddoppiare e otterrete la risposta che ci si aspetta.

Altri suggerimenti

Divisione intera comporterà un numero intero di essere restituito come risultato della divisione.

È necessario uno dei parametri della divisione di essere un galleggiante in modo che il risultato sia un galleggiante. È possibile farlo lanciando uno di loro ad un galleggiante.

double verH = (double)hoogtePlaatje/breedtePlaatje;

o

double verH = hoogtePlaatje/(double)breedtePlaatje;

il C # spec per quanto riguarda la divisione .

Quando si divide due numeri interi, C # utilizza divisione intera , dove viene scartata la parte frazionaria . Nel tuo caso che stai ricevendo:

500 / 800 = 0 + 5/8 

Il che, scartando la parte frazionaria, dà:

500 / 800 = 0

Per ottenere la divisione in virgola mobile, gettato uno degli argomenti a uno double, float o decimal a seconda del livello di precisione è necessario, che farà sì che l'altro argomento da convertito in modo implicito dello stesso tipo e la divisione effettuata utilizzando floating point regole invece di regole interi, ad esempio

double result = (double)breedtePlaatje  / hoogtePlaatje ;

Non ho mai usato C #, ma probabilmente è necessario lanciare una delle variabili di raddoppiare, in questo modo:

double verH = (double)hoogtePlaatje/breedtePlaatje;

Prova questo:

double verH = double (hoogtePlaatje) / breedtePlaateje;

Se si divide un int da un int, si otterrà una risposta troncata. Fusioni uno di loro fino ad un doppio, e l'intera divisione sarà fatta come doppio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top