Tol
Clause
Compares floatingpoint values with tolerance to rounding errors.
Syntax
comparison Tol [ tolerance ]
Parts
comparison
 Mandatory expression that uses one or more comparison operators.
Usually the tolerance applies to all comparisons in the given expression.
But you can select which comparisons use the tolerance with the symbol
~
(tilde) written before the comparison operators. tolerance
 Optional floatingpoint literal used to calculate how near two values must compare to be equal.
 The default is
1E15
.
Instructions
The clause Tol
tries to give you a solution to a problem with floatingpoint calculations.
Each time you use floatingpoint values in a calculation, it can cause more and more rounding errors.
These errors can cause failures in comparisons of equality and inequality.
When you supply an expression with Tol
, you can give a tolerance value, written as a floatingpoint literal.
The typical tolerance is a very small number.
The default is 0.000000000000001
or 1E15
.
All applicable comparisons in the expression change how they are calculated.
The table that follows gives all the equivalent expressions.
With Tol 
Without Tol 













Note:
Comparisons with tolerance are always slower than the usual comparisons.
If performance is important, try to use only =
or <>
.
Mixing comparisons with and without tolerances
You can have comparisons with and without tolerances in one expression. But only comparisons that have a floatingpoint value are applicable.
If you must have a mixture of comparison tolerances, you can use a special indicator.
The tilde (~
) identifies a comparison that uses the supplied tolerance.
You write the tilde before the comparison operator.
For example, ~=
, ~<>
, ~<=
, ~>=
, ~<
, and ~>
.
It is an error to write a tilde without Tol
on the expression.
It is also an error to write a tilde on a comparison that does not compare floatingpoint values.
But you can also use the tilde to show always which are floatingpoint comparisons.
Examples
Sub test a, b As Real64
PrintLine $"{a} = {b} is {a = b Tol}"
End
test 1000000000000.01, 1000000000000.011
test 100.01, 100.011
1000000000000.01 = 1000000000000.011 is true 100.01 = 100.011 is false