Bonjour à tous,
J'utilise une fonction qui retourne un booléen afin d'identifier si un nombre passé en paramètre ou non.
True lorsque le nombre est décimal et False lorsqu'il ne l'est pas.
Lorsqu'un nombre, ayant comme séparateur de décimal un point, est passé en paramètre, la fonction ci-dessous retourne FALSE si la variable frenchCulture est initialisée de cette façon :
Dim frenchCulture As NumberFormatInfo = New CultureInfo("fr-FR", False).NumberFormat
En revanche, elle retourne TRUE, si la variable frenchCulture est initialisée de cette façon :
Dim frenchCulture As NumberFormatInfo = New CultureInfo("en-EN", False).NumberFormat
Voici la fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ''' <summary>
''' Vérifie la validité du format des nombres
''' </summary>
''' <param name="nombreATraiter">Valeur à traiter</param>
''' <param name="allowBelow0">Détermine si l'entier peut être négatif</param>
''' <returns><c>True</c> si le format est value. <c>False</c> dans le cas contraire</returns>
Private Function IsDecimal(ByVal nombreATraiter As String, ByVal allowBelow0 As Boolean) As Boolean
Dim isDec As Boolean = False
If nombreATraiter.IsVoid() Then
isDec = False
Else
Dim frenchCulture As NumberFormatInfo = New CultureInfo("fr-FR", False).NumberFormat
Dim result As Decimal
frenchCulture.CurrencyDecimalSeparator = "."
Dim ndStyles As NumberStyles = NumberStyles.AllowDecimalPoint
If allowBelow0 Then
ndStyles = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowLeadingSign
End If
isDec = Decimal.TryParse(nombreATraiter, ndStyles, frenchCulture, result)
End If
Return isDec
End Function |
A noter que le séparateur est défini de cette façon :
frenchCulture.CurrencyDecimalSeparator = "."
Est-il possible de garder le paramètre CultureInfo fr-FR et non en-EN ?
Merci d'avance pour l'aide,
Emilie
Partager