# Data Type Troubleshooting

What follows is a list of problems that can occur when you use intrinsic data types.

## Floating-point values do not compare as equal

When you use floating-point numbers (Real32, Real64, Real, and Real128), know that they are stored as binary fractions. They can hold an accurate quantity only when it is a binary fraction with `k / (2 ^ n)`, where `k` and `n` are integers. For example, `0.5 = 1/2` and `0.1875 = 3/16`. Thus these are accurate values. But `0.3 = 3/10` and `0.15 = 3/20`, thus these are approximate values.

Because of this, you cannot be sure of accurate values as a result of floating-point operations. You cannot think that two given values will be equal, although mathematics shows that they are.

To compare floating-point values, follow these steps:

• Select a satisfactory maximum tolerance for the given comparison. All values in this range will become equal.
• Put `Tol` directly after the end of the comparison expression.
• Follow that with the selected tolerance value. This can be a floating-point literal or a declared constant (See `Const`).