2
votes

Valider la valeur fractionnaire décimale

J'ai besoin de valider certains nombres d'entrée donnés en décimal. L'entrée est pour le temps d'enregistrement en heures et en fraction d'heure comme 1,25 ou 2,50 ou 3,00

Je dois forcer la saisie de valeurs fractionnaires décimales de .00 .25 .50 .75

Je pourrais convertir la valeur décimale en une chaîne, puis voir combien de décimales il y a et les valeurs -ou- serait-il préférable d'écrire un Regex ou quelque chose de similaire?

Ryan

c#

3 commentaires

de seulement .00 .25 .50 .75 ?


Avez-vous envisagé de restreindre les choix dans l'interface utilisateur? Ouais, vous voulez toujours valider le back-end comme le décrit @somokroces, mais cela couvrira presque tous vos cas.


@ flydog57, je pourrais aimer cette idée. Je pourrais simplement les cinq une plage de valeurs d'heure de 0,00 à 24,00 dans une liste déroulante ....


3 Réponses :


0
votes

Vous pouvez prendre le nombre, le multiplier par 100 et vérifier si le nombre modulo 25 vous donne 0. (Puisque les nombres qui sont divisés par 25 sans reste sont X25, X50, X75, X00)

var number = 1.25;
if(number%0.25==0) // valid
else // not valid


1 commentaires

Utilisez un décimal , pas un doubl e si vous allez faire des calculs en virgule flottante (c'est-à-dire, ajoutez un suffixe m à vos nombres littéraux ). La correspondance à virgule flottante avec les doubles est une approximation.



2
votes

Vous pouvez vérifier la valeur% 0.25 == 0 .


1 commentaires

Même commentaire, utilisez 0.25m et non 0.25 . Les doubles sont des approximations et ne devraient vraiment pas être utilisés avec des vérifications d'égalité.



0
votes

Vous pouvez utiliser l'expression régulière ^ \ d * \. (00 | 25 | 50 | 75) $ .


0 commentaires