Comparison Operators

Compare two values or a range of values.

Syntax

Usual comparison

value_1 comparison_op value_2

Range comparison

value_1 { < | <= } value_2 { { < | <= } value_n }…

Tolerant comparison

value_1 tolerant_comparison value_2 [ tolerant_comparison value_n ]… Tol tolerance

Parts

value_1
An expression to compare.
comparison_op
One of the comparison operators: <, <=, >, >=, =, or <>.
value_2
An expression of a type compatible with that of value_1.
value_n
For a range comparison, an expression of a type compatible with that of value_1 and value_2.
tolerant_comparison
One of the comparison operators with an optional tilde (~) before it. Not all comparisons must be tolerant, but all tolerant comparisons use the same tolerance in the full expression.
tolerance
After Tol, a numeric expression to specify the floating-point error tolerance of the comparisons. See Tol Clause for more information.

Instructions

Operator True if False if
< (Less than) value_1 < value_2 value_1 >= value_2
<= (Less than or equal) value_1 <= value_2 value_1 > value_2
> (More than) value_1 > value_2 value_1 <= value_2
>= (More than or equal) value_1 >= value_2 value_1 < value_2
= (Equal) value_1 = value_2 value_1 <> value_2
<> (Not equal) value_1 <> value_2 value_1 = value_2

Comparing numbers

TODO

Comparing floating-point numbers

You can use the keyword Tol to make floating-point comparisons with a tolerance to rounding errors. A comparison expression without this clause could possibly give incorrect results because of how calculated results can have small rounding errors. The tolerance value is the maximum the two values can be different but compare as equal.

Comparing strings

TODO

Range comparisons

You can find if a value is in a range with a special syntax. You use two operators from the set of < and <= to connect the three values. You put the values in the sequence (1) lower value, (2) test value, and (3) higher value. This syntax is almost the same as that used by mathamatics.

It is almost the same as what follows:

value_1 { < | <= } value_2 And value_2 { < | <= } value_3

If you wrote code the same as above and value_2 is an expression with side effects, then the results could be unknown. The range comparison makes sure that each expression does not calculate more than one time.

Only the operators < and <= are correct in this type of comparison. It is not a syntax error to use other comparison operators the same. But it is usually a programming error. Each comparison will evaluate from left to right, then the Boolean result will be compared to the next value in the chain. Thus this usually makes incorrect code.

Comparing objects

Unlike other values, objects can only be compared for equality with the Is operator.

Other comparison operators

The operator <=> is available only as part of the Conditional Operator. It does a test of two values to find if one is less than, equal to, or more than the other. A different name for it is the “spaceship operator” because of how it looks.

Examples

If x ~= 4.5 Tol 1e-2 Then
End If

If 0.0 ~<= y ~<= 1.0 Tol 1e-8 Then
End If