none
Divisione con decimali RRS feed

  • Domanda

  • Buonasera.

    Sto lavorando ad un piccolo programma aziendale per il resize delle fotografie. L'immagine in ingresso potrà avere una base, un'altezza e l'aspect ratio (divisione tra base e altezza o altezza e base a secondo se l'immagine è orizzontale o verticale) differenti. In un'immagine da fotocamera l'aspect è di 1,5.

    Il codice che ho scritto è questo:

    //...
    int newAltezza, newBase;
    
    //...
    
    // Ricavo le dimensioni originali
    double sourceWidth = loadedPhoto.Width;
    double sourceHeight = loadedPhoto.Height;
    
    double aspect = 0;
    
    if (sourceWidth > sourceHeight)
    {
       // La foto è orizzontale
       aspect = sourceWidth / sourceHeight;
    } else
       aspect = sourceHeight / sourceWidth;
    
    newAltezza = Convert.ToInt16(newBase * aspect);

    Solamente che la divisione, ovvero il parametro aspect, mi risulta sempre uguale ad 1, senza mai variare mai anche se vario le variabili sourceWidth e sorceHeight.

    Non riesco a capire dove sia il mio errore...

    Grazie in anticipo a tutti!


    • Modificato BadMind martedì 30 giugno 2015 14:55 errore nel copiare la dichiarazione delle variabili iniziali
    martedì 30 giugno 2015 14:54

Risposte

  • Buonasera BadMind,
    la divisione che effettui alla variabile di tipo double aspect è corretta,
    infatti supponendo di avere come proprietà Width di loadedPhoto il valore 1200 e come proprietà Height di loadedPhoto 800 otteniamo dalla loro divisione 1.5.
    Faccio un piccolo esempio:
    double sourceWidth = 1200;
    double sourceHeight = 800;
    
    double aspect = 0;
    aspect = sourceWidth / sourceHeight;
    Controlla il resto del codice per individuare eventuali errori.

    Ciao

    Paolo Pranzo

    martedì 30 giugno 2015 17:03

Tutte le risposte

  • Ciao,

    ho provato con LINQPad 4 a costruire un piccolo esempio e la divisione restituisce un valore di tipo Double con relativi decimali.

    Potresti indicare i valori delle due variabili che contengono le dimensioni della foto; il problema potrebbero essere i valori di partenza.

    double sourceWidth = loadedPhoto.Width;
    double sourceHeight = loadedPhoto.Height;


    Gianluca Riva

    martedì 30 giugno 2015 17:02
  • Buonasera BadMind,
    la divisione che effettui alla variabile di tipo double aspect è corretta,
    infatti supponendo di avere come proprietà Width di loadedPhoto il valore 1200 e come proprietà Height di loadedPhoto 800 otteniamo dalla loro divisione 1.5.
    Faccio un piccolo esempio:
    double sourceWidth = 1200;
    double sourceHeight = 800;
    
    double aspect = 0;
    aspect = sourceWidth / sourceHeight;
    Controlla il resto del codice per individuare eventuali errori.

    Ciao

    Paolo Pranzo

    martedì 30 giugno 2015 17:03