Length and precision

Pentaho Data Integration

Version
9.3.x
Audience
anonymous
Part Number
MK-95PDIA003-15
Question
I made a transformation using the A/B function and it rounded incorrectly. I entered integers in Field A and Field B, but my result type was a number, so I would expect the integers to be converted to numbers before executing the division.

For example, when I execute 28/222, the result is 0.0 instead of 0.1261 which is expected behavior. It seems the result type is ignored. If I change the values in Field A and Field B to numbers (6, 4) my result is 0.12612612612612611 which still ignores the result type (4 places after the comma).

Suggested Solution
Length and Precision are metadata pieces. We convert to the required metadata type when we result the data to a location, not during the transformation.

If you want to round to the specified precision, you should do this rounding in another step. However, rounding double point precision values is futile anyway. A floating point number is stored as an approximation, so 0.1261, your desired output, would probably be stored as 0.126099999999 or 0.1261000000001.

Note: This behavior is not true for the data type BigNumbers.

So the calculation is rounded using BigDecimals once the numbers are stored in the output table, but not during the transformation.

Note: This behavior is also true for the Text File Output step. If you would have specified Integer as the result type, the internal number format would have been retained. When you press Get Fields, the required Integer type would be filled in. Then the required conversion would occur at this point. See Text File Output for details.