Precision loss with large numbers or non-integer values

Problem or error: Due to limitations of the data types used in Unica Campaign, precision loss can occur in a number of circumstances.

For example, when numbers greater than 15 digits are used, Unica Campaign approximates these values. Also, when adding non-integer values, precision is lost (for example, 95.1 + 4.9 may not equal exactly 100).

Solution: Possible workarounds: When working with non-integer values, if you can make them integers with fewer than 15 digits, there will be no loss of precision. For example, multiply the values in the previous example by 10, add a small delta such as .3, then use the FLOOR() macro to change the value to an integer. This would correctly compare 951 + 49 = 1000 as TRUE.

Alternatively, you can compare values using a small delta value rather than an exact comparison (for example, 95.1 + 4.9 > 100 - delta AND 95.1 + 4.9 < 100 + delta).

Lastly, if the values exist in the database, you could perform the computations in the database (for example, by writing a GROUPBY custom macro that sums these values for each customer).