1

这可能很容易,但我只需要确保如何正确地做到这一点。如何检查一个decimal数字是否在一个范围内?

我有两个十进制数字:

Dim minFactor As Decimal = 1.95
Dim maxFactor As Decimal = 2.05

Dim varResult as decimal

现在我想检查我的计算varResult是否在两个因素的范围内。如果是,则返回true

怎样才是最正确的做法?

我试过:

Select Case varResult 
    Case 1.95 To 2.05 
        Unit1 = True 
    Case Else 
        Unit1 = False 
End Select 
4

3 回答 3

5

您可以简单地使用>=and<=运算符

If varResult >= minFactor AndAlso varResult <= maxFactor Then
    ' ...
End If

但由于您使用的是 ASP.NET,我假设您的问题针对的是用户输入的验证。所以我会使用一个RangeValidator为此目的而制作的:

<asp:RangeValidator id="Range1"
           ControlToValidate="TextBox1"
           MaximumValue="2.05" 
           MinimumValue="1.95" 
           Type="Double"
           EnableClientScript="false"
           Text="The value must be from 1.95 to 2.05!"
           runat="server"/>

请注意,RequiredFieldVFalidator当根本没有输入无效时,您还需要一个。

于 2012-12-21T08:47:18.543 回答
0

只需将值与每个范围进行比较:

If varResult >= minFactor And varResult <= maxFactor Then ...

如果范围限制应该包含,则可以使用>=and运算符,如果范围限制应该排除,则可以使用and运算符。<=><

如果您有多个范围,并且一个范围接管了另一个范围,则通常将下限包括在内而上限不包括在内,这样范围重叠的地方就没有值:

Dim minRange1 As Decimal = 1.95
Dim maxRange1 As Decimal = 2.05
Dim minRange2 As Decimal = 2.05
Dim maxRange2 As Decimal = 2.95

If varResult >= minRange1 And varResult < maxRange1 Then
  ...
ElseIf varResult >= minRange2 And varResult < maxRange2 Then
  ...
End If
于 2012-12-21T08:47:31.603 回答
0

简单的 :

If (varResult < maxFactor && varResult > minFactor )
     return true; 
else 
     return false; 

谢谢

于 2012-12-21T08:48:03.727 回答