Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Tuco
    Registrato dal
    Sep 2005
    Messaggi
    199

    [vb.net] campi double

    ho una funzione che calcola un prezzo ivato in questo modo

    Return prezzo + (prezzo * aliquota)

    Quindi se io passo 150 come prezzo e come aliquota 0.04 (4%), dai calcoli dovrebbe venire:156.

    Invece mi da 155.9999999356 ecc..

    il tutto viene salvato così nel db....ma perchè!?
    Il mondo si divide in due categorie: chi ha la pistola carica e chi no...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Il campo Double non è adatto alle valute in quanto tutti i valori a virgola mobile sono influenzati dall'errore di precisione nel loro trattamento da parte della CPU.

    E' necessario usare un campo Decimal o equivalente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Tuco
    Registrato dal
    Sep 2005
    Messaggi
    199
    il decimal da quello che ho letto ha un bel pò di posizioni decimali. ma il mio problema è che nel DB, il campu valuta accetta un massimo di 4 decimali....
    Il mondo si divide in due categorie: chi ha la pistola carica e chi no...

  4. #4
    Utente di HTML.it L'avatar di Tuco
    Registrato dal
    Sep 2005
    Messaggi
    199
    però ho provato ad utilizzare un decimal in vb e lasciare un double nel DB e mi salva 156..ma...proviamo così!
    Il mondo si divide in due categorie: chi ha la pistola carica e chi no...

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da Tuco
    il decimal da quello che ho letto ha un bel pò di posizioni decimali. ma il mio problema è che nel DB, il campu valuta accetta un massimo di 4 decimali....
    Quanti decimali devi utilizzare per il tuo campo contenente valute? Più di 4?

    Originariamente inviato da Tuco
    però ho provato ad utilizzare un decimal in vb e lasciare un double nel DB e mi salva 156..ma...proviamo così!
    Sei alla ricerca di problemi...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di Tuco
    Registrato dal
    Sep 2005
    Messaggi
    199
    Originariamente inviato da alka
    Quanti decimali devi utilizzare per il tuo campo contenente valute? Più di 4?
    beh per i decimali al massimo 5 (euro)

    Sei alla ricerca di problemi...

    Il mondo si divide in due categorie: chi ha la pistola carica e chi no...

  7. #7
    Utente di HTML.it L'avatar di Tuco
    Registrato dal
    Sep 2005
    Messaggi
    199
    Originariamente inviato da alka
    Quanti decimali devi utilizzare per il tuo campo contenente valute? Più di 4?


    Sei alla ricerca di problemi...
    scusa che tipo di problemi?
    Il mondo si divide in due categorie: chi ha la pistola carica e chi no...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da Tuco
    scusa che tipo di problemi?
    Effettuando calcoli di valute usando però dei tipi influenzati dall'errore di precisione, esiste la possibilità che il risultato finale differisca da quello che avrebbe realmente dovuto essere.

    In ogni caso, per ogni tipo di informazione esiste un tipo di dato specifico e come tale va usato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.