Conversione Lire-Euro e viceversa

1° Metodo:

'*********************************************
'Funzione che converte un'importo da lire in Euro
'lit = importo in lire da convertire
'*********************************************

Function convEuro(lit As Double) As Double
    convEuro = Round((lit / 1936.27), 2)
End Function

'*********************************************
'Funzione che converte un'importo da Euro in Lire
'eur = importo in euro da convertire
'*********************************************

Function convLire(eur As Double) As Double
    convLire = Round(eur * 1936.27)
End Function

La funzione Round è soggetta ad un comportamento bizzarro non documentato: quando la parte frazionaria è esattamente 0,5, Round l'arrotonda alla cifra superiore se il numero intero è dispari ed alla cifra inferiore se il numero intero è pari.

Print Round(1.5), Round(2.5)     'Entrambe visualizzano "2".

Questo comportamento è necessario per evitare errori quando si eseguono calcoli statistici e non dovrebbe essere considerato un bug.

Testato su: Tutti i Sistemi operativi

2° Metodo:

Inserire questa costante nello stesso modulo dove inserite le Function.

Const kLirePerEuro As Double = 1936.27

Function LireToEuro(ByVal cLire As Double) As Double
    Dim dFrac As Double, dAmount As Double
    dAmount = cLire / kLirePerEuro * 100
    dFrac = dAmount - Int(dAmount)
   
' se la parte frazionaria è 0.5 si deve arrotondare per eccesso
    If dFrac> = 0.5 Then cLire = cLire + 0.01
    LireToEuro = cLire / kLirePerEuro
End Function

Function EuroToLire(ByVal cEuro As Double) As Double
    Dim dFrac As Double, dAmount As Double
    dAmount = cEuro * kLirePerEuro
    dFrac = dAmount - Int(dAmount)
   
' se la parte frazionaria è 0.5 si deve arrotondare per eccesso
    If dFrac >= 0.5 Then cEuro = cEuro + 0.01
    EuroToLire = cEuro * kLirePerEuro
End Function