C# 验证十进制分数值

C# 验证十进制分数值,c#,C#,我需要验证一些以十进制形式给出的输入数字。输入用于以小时和小时分数记录时间,如1.25或2.50或3.00 我需要强制输入小数点的.00.25.50.75 我可以将十进制值转换为字符串,然后查看它有多少个小数位,以及这些值-或者-写一个正则表达式或类似的东西会更好吗 Ryan你可以取这个数字,乘以100,然后检查25模数是否等于0。(因为被25除后没有剩余的数字是X25、X50、X75、X00) 编辑: 或者直接说: var number = 1.25; if(number%0.25==0) /

我需要验证一些以十进制形式给出的输入数字。输入用于以小时和小时分数记录时间,如1.25或2.50或3.00

我需要强制输入小数点的.00.25.50.75

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


Ryan

你可以取这个数字,乘以100,然后检查25模数是否等于0。(因为被25除后没有剩余的数字是X25、X50、X75、X00)

编辑: 或者直接说:

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

(感谢您在评论部分指出这一点)

您可以检查
值%0.25==0
您可以使用正则表达式
^\d*\(00 | 25 | 50 | 75)$
.00.25.50.75
?您考虑过限制UI中的选择吗?是的,您仍然需要像@somokroces所描述的那样进行后端验证,但它将覆盖几乎所有的情况。@flydog57,我可能会喜欢这个想法。我可以在一个下拉框中给它们添加一个从0.00到24.00的小时值范围……如果你要做浮点数学,请使用
decimal
,而不是
doubl
e(即,在文字数字中添加
m
后缀)。带双精度浮点匹配是一种近似值。同一注释,使用
0.25m
而不是
0.25
。double是近似值,不应该与相等检查一起使用。
var number = 1.25;
if(number%0.25==0) // valid
else // not valid