Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 42
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [Vb.Net] - Arrotondamento

    Salve a tutti scusate la domanda forse idiota...

    Ho un numero da arrotondare in euro. Il numero in questione è questo:

    4,8346

    Ora...se uso le funzioni FormatNumber(num,2) o formatCurrency(num) mi restituisce

    4,83

    Ma non è sbagliato?

    Analizziamo il numero:

    4,8346

    non si va a scalare quando si arrotonda? tipo che la cifra rosa fa diventare la cifra arancione un 5 e la cifra arancione ormai 5 fa diventare il 3 un 4? Io mi ricordavo così e non una semplice troncatura tenendo conto solo del millesimo dell'importo..:

    Probabilmente sto dicendo un'idiozia però chiedo che è sempre megliO

  2. #2
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Devi arrotondare alla terza cifra con Math.Round. E dopo al limite troncare alla seconda.

  3. #3

    Re: [Vb.Net] - Arrotondamento

    Originariamente inviato da Veronica80
    Salve a tutti scusate la domanda forse idiota...

    Ho un numero da arrotondare in euro. Il numero in questione è questo:

    4,8346

    Ora...se uso le funzioni FormatNumber(num,2) o formatCurrency(num) mi restituisce

    4,83

    Ma non è sbagliato?

    Analizziamo il numero:

    4,8346

    non si va a scalare quando si arrotonda? tipo che la cifra rosa fa diventare la cifra arancione un 5 e la cifra arancione ormai 5 fa diventare il 3 un 4? Io mi ricordavo così e non una semplice troncatura tenendo conto solo del millesimo dell'importo..:

    Probabilmente sto dicendo un'idiozia però chiedo che è sempre megliO
    No, non si va' "a scalare" quando si arrotonda !
    Si esamina semplicemente la prima cifra da escludere, se 0..4 si arrotonda per difetto, se 5..9 per eccesso.

    Ciao !
    IceCube_HT (VB6 fan Club)

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ah ok ok grazie per l'info!

    Sto impazzendo per gestire gli acconti sulle preparcelle
    Perchè sto cavolo di euro ha incasinato tutto! Se non arrotondo tutto torna ma arrotondando a volte perde 1 centesimo

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Forse ho trovato il metodo (forse)!
    Basta arrotondare sempre eccesso l'imponibile e per difetto l'IVA!

    Rimane solo un problema non so come fare ad arrotondare in questo modo (senza perdere i decimali), perchè Math.Ceiling mi crea solo interi!

  6. #6
    Originariamente inviato da Veronica80
    Perchè sto cavolo di euro ha incasinato tutto! Se non arrotondo tutto torna ma arrotondando a volte perde 1 centesimo
    Non stai usando i double per importi monetari, vero?
    Rimane solo un problema non so come fare ad arrotondare in questo modo (senza perdere i decimali), perchè Math.Ceiling mi crea solo interi!
    Moltiplica per cento, arrotonda, dividi per cento. Ma a me pare un po' bizzarra la tua soluzione...
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Beh nel DB Mysql si i campi sono double! Ma col programma uso le variabili decimal!

    La soluzione purtroppo è l'unica possibile! Ti faccio un esempio!

    Mi danno 80€ per acconto a una preparcella di 100€.

    Io da questi 80€ devo scorporare l'IVA!


    In teoria dovrei fare così:

    121:80,00=100:x

    In questo modo trovo l'imponibile sul quale calcolare il 21%!

    Nel mio caso:

    (80,00*100)/121= 66,1157024793..eccc

    arrotondato da: 66,12.

    Se ora provo a calcolare l'iva al 21 ottengo: 66,12*0,21= 13,8852 (che arrotondato da 13,89€).

    calcolo il totale al lordo di iva: 66,12+13,89= 80,01

    Come vedi a causa di questi arrotondamenti non ottengo più i miei 80,00€!

    Cercando ho letto che l'unico modo è arrotondare per difetto l'imponibile e per eccesso l'iva. Solo in questo modo si torna alla cifra finale! Non posso arrotondare per difetto l'iva se no starei evadendo 0,01€!

    Se non mi son spiegata ti rimando a questo articolo dove lo spiega megliO:

    http://gestionaleamica.com/Blog/prob...tra-soluzione/


    Che casino questo euro.... I Miss la lira :°

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Originariamente inviato da Veronica80
    Forse ho trovato il metodo (forse)!
    Basta arrotondare sempre eccesso l'imponibile e per difetto l'IVA!

    Rimane solo un problema non so come fare ad arrotondare in questo modo (senza perdere i decimali), perchè Math.Ceiling mi crea solo interi!
    Ho scritto male :P Sempre ECCESSO l'IVA e sempre per DIFETTO l'imponibile!

  9. #9
    Ciao, quando si fanno calcoli con l'euro, sarebbe meglio usare sempre 4 cifre decimali, e solo quando ti serve il totale da presentare, arrotondare a 2 cifre.
    Jupynet

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    forse stai sbagliando qualcosina ?

    codice:
    Dim acconto As Double = 80
    Dim ImponibileAcconto As Double = Math.Round(acconto / 1.21, 2, MidpointRounding.ToEven)
    Dim IVAAcconto As Double = Math.Round(acconto - ImponibileAcconto, 2, MidpointRounding.ToEven)
    Dim ProvaDiConcetto As Double = Math.Round(ImponibileAcconto + IVAAcconto, 2, MidpointRounding.ToEven)
    lo scorporo IVA va calcolato con la formula IVA = importo-(importo/1.Percentuale)



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.