Troubleshooting Data Types

The following is a list of common problems that can occur when working with intrinsic data types.

Floating-point expressions not comparing as equal

When you work with floating-point numbers (Real32, Real64, Real, and Real128), keep in mind that they are stored as binary fractions. This means they can hold an exact representation of a quantity only when it is a binary fraction (of the form k / (2 ^ n) where k and n are integers). For example, 0.5 = 1/2 and 0.1875 = 3/16, thus these represent precise values. In contrast, 0.3 = 3/10 and 0.15 = 3/20, thus these represent approximations.

As a consequence, you cannot rely on exact values resulting from floating-point operations. In particular, you cannot assume that any two given values will be considered equal, even if mathematically they should be.

To compare floating-point quantities, do the following:

For more information, see Tol Clause.