Suite à cette discussion, j'ai développé un petit "Extended Round" qui peut arrondir aussi bien à gauche qu'à droite de la virgule.
Une option (RoundUp) permet de forcer à l'arrondi supérieur (en valeur absolue).
Pour arrondir à gauche de la virgule, utiliser un nombre négatif pour Digits.
1 2 3 4 5 6 7 8 9 10 11 12 13
| Function ExtRound(Number, _
Optional Digits As Integer = 0, _
Optional RoundUp As Boolean = False) _
As Double
If RoundUp Then
If Not Fix(Number * 10 ^ Digits) = Number * 10 ^ Digits Then
ExtRound = (Fix(Number * 10 ^ Digits) + IIf(Number > 0, 1, -1)) / 10 ^ Digits
End If
Else
ExtRound = Round(Number * 10 ^ Digits) / 10 ^ Digits
End If
End Function |
Comme toutes les fonctions ayant plusieurs paramètres optionnels, celle-ci accepte les paramètres nommés:
MsgBox ExtRound(iVal, RoundUp:=True)
Partager