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
3 Réponses :
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
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.
Vous pouvez vérifier la valeur% 0.25 == 0 .
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é.
Vous pouvez utiliser l'expression régulière ^ \ d * \. (00 | 25 | 50 | 75) $ .
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 ....