验证十进制小数值

3

我需要验证一些以十进制表示的输入数字。这些数字是用于记录时间,包括小时数和小时的小数部分,例如1.25、2.50或3.00。

我需要强制要求输入小数部分为.00、.25、.50或.75。

我可以将十进制值转换为字符串,然后查看它有多少位小数和这些小数的值,或者编写一个正则表达式或类似的东西会更好呢?

Ryan


1
只有 .00 .25 .50 .75 吗? - undefined
你有没有考虑在用户界面中限制选择的范围?是的,像@somokroces所描述的那样,你仍然希望进行后端验证,但它几乎可以涵盖所有情况。 - undefined
@flydog57,我可能会喜欢这个想法。我可以在下拉框中给他们提供从0.00到24.00的小时值范围。 - undefined
3个回答

3
你可以检查 value % 0.25 == 0

1
同样的注释,使用0.25m而不是0.25。双精度浮点数是近似值,不应该与等式检查一起使用。 - undefined

0

你可以使用正则表达式^\d*\.(00|25|50|75)$


0
你可以取这个数字,乘以100,然后检查该数字对25取模是否等于0。(因为能被25整除且没有余数的数字是X25、X50、X75、X00)
var number = 1.25;
if((number*100)%25==0) // valid
else // not valid

编辑: 或者直接:

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

(感谢在评论区指出)


如果你要进行浮点数运算(即在字面数字后添加m后缀),请使用decimal而不是double。使用double进行浮点数运算会产生近似值。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接