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