Precision loss can occur with Decimal and Double data types in a calculation when the result produces a value with a precision greater than the maximum.
If you disable high precision, the PowerCenter Integration Service converts decimal values to double. Precision loss occurs if the decimal value has a precision greater than 15 digits. For example, you have a mapping with Decimal (20,0) that passes the number 40012030304957666903. If you disable high precision, the PowerCenter Integration Service converts the decimal value to double and passes 4.00120303049577 x 10
For transformations that support Decimal data type of precision up to 28 digits, use the Decimal data type and enable high precision to ensure precision of up to 28 digits.
Precision loss does not occur in a calculation unless the result produces a value with precision greater than the maximum allowed digits. In this case, the PowerCenter Integration Service stores the result as a double.
Do not use the Double data type for data that you use in an equality condition, such as a lookup or join condition.
The following table lists how the PowerCenter Integration Service handles decimal values based on high precision configuration:
When you enable high precision, the PowerCenter Integration Service converts numeric constants in any expression function to Decimal. If you do not enable high precision, the PowerCenter Integration Service converts numeric constants to Double.
You can ensure the maximum precision for numeric values greater than 28 or 38 digits depending on the transformation. Before you perform any calculations or transformations with the transformation functions, truncate or round any large numbers.