in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

arrotondamento euro....

Ultimo messaggio ricevuto il 10-03-2006 11.32 da theFool. 1 risposta(e).
Pagina 1 di 1 (2 elemento/i)
Ordina messaggi: Precedente Successivo
  • 09-03-2006 15.59

    • tsetse
    • Non Valutato
    • Registrato il 09-03-2006
    • Messaggi 1

    arrotondamento euro....

    ciao ragazzi,

    ho trovato questo script su questo sito, per l'arrotondamento dell'euro secondo la normativa CEE

    questo mi servirebbe visto che sto facendo un sistema di fatturazione e con i vari coalcoli dell'iva mi da poi degli importi tipo € 195.5689....

    ai fini di fare le cose bene per il mio commercialista, dovrei arrotondare a € 195.57.

    l'ho preso, l'ho inserito in una pagina asp ma da degli errori......

    qualcuno mi può dare una mano?
    o se conoscete qualche script che faccia a caso mio?

     

    grazie a tutti

    Giovanni

    lo script è questo:

    Public Function dblEuro2Dec(dblCifra As Double) As Double
    Dim strNumero As String, strIntero As String, sDecimali As String
    Dim sChar as String * 1
    Dim iPosVirg As Integer, iCnt As Integer
    Dim dblNumElab As Double


        ' trasforma il numero in stringa
        strNumero = CStr(dblCifra)

        ' rileva la parte intera del numero
        strIntero = CStr(Int(dblCifra))

        ' SE il separatore decimale è "." lo converto in ","
        ' per compatibilità con tutte le impostazioni internazionali
        strNumero = Replace(strNumero, ".", ",")

        ' rileva la posizione della virgola
        iPosVirg = InStr(strNumero, ",") 

        ' SE non ci sono decimali
        If (iPosVirg = 0) Then               
           dblEuro2Dec = dblCifra
           Exit Function
        End If

        ' rileva la parte decimale del numero
        sDecimali = Mid(strNumero, iPosVirg + 1, Len(strNumero) - iPosVirg)  

        Select Case Len(sDecimali)
          Case Is = 2
            dblEuro2Dec = dblCifra
            Exit Function
          Case Is > 6
            ' tronca a 6 il numeri di decimali
            sDecimali = Left(sDecimali, 6)
        End Select

        ' il numero da elaborare è la variabile "dblNumElab",
        ' cui assegnamo il valore: 0,nnnnn
        dblNumElab = Val("0." & sDecimali)       

        ' esegue la funzione di arrotondamento iniziando dal decimale in coda
        ' fino all'ultimo arrotondabile, che è il secondo
        For iCnt = Len(sDecimali) To 3 Step -1
          iPosVirg = InStr(dblNumElab, ",")
          sDecimali = Mid(dblNumElab, iPosVirg + 1, Len(dblNumElab) - iPosVirg)
          If (Len(sDecimali) < 3) Then Exit For
          sChar = Mid(sDecimali, iCnt, 1)
          sDecimali = Left(sDecimali, Len(sDecimali) - 1)
          dblNumElab = Val("0." & sDecimali)
          If (Val(sChar) > 4) Then
            dblNumElab = dblNumElab + (1 / 10 ^ (iCnt - 1))
          End If
        Next iCnt

        ' assegna alla funzione il numero arrotonadato
        dblEuro2Dec = Val(strIntero) + dblNumElab   

    End Function

    • Log
  • 10-03-2006 11.32 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Re: arrotondamento euro....

    Ciao,
    lo script che hai copiato è stato redatto utilizzando Visual Basic, che da ASP è supportato nella versione VBScript; benchè la sintassi sia la medesima essi sono differenti, soprattutto nel modo di gestire la tipizzazione dei dati: in VBScript tutte le variabili sono assunte come Variant e dunque non ne deve essere espresso il tipo tramite l'operatore As, ovvero:

    Public Function dblEuro2Dec(dblCifra)
    Dim strNumero, strIntero, sDecimali
    Dim sChar
    Dim iPosVirg, iCnt
    Dim dblNumElab
    ...

     

    Ciao ciao
    • Log
Pagina 1 di 1 (2 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4109/4535.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"