ibmcognos.decfloat

When this parameter is specified, the query service is directed to use a decimal float type, DECFLOAT 128, which accurately represents values with precision of up to 34 digits. When a column with large precision is detected, it is internally changed to DECFLOAT and the data type in the model or report is described as DECIMAL(0,0).

To enable this feature, specify the connection parameter ibmcognos.decfloat=true for the database connection that is used by the query service. In existing models, the columns must be remapped to DECIMAL(0,0) instead of double.

For the query service to read the rows that are returned by a query, the JDBC driver must return the column values using a specific Java™ data type. In previous releases, it was possible for a database such as ORACLE to return a numeric column where the precision caused the query service to use the double data type. When the values that were returned by a query had precision greater than 16 digits, the conversion could result in an inaccurate value.

For example, if an ORACLE column was defined as NUMBER (without stating precision), or an aggregate such as SUM was computed that ORACLE returned as a NUMBER, the returned value of 1234567890123456789 might be converted to the value of 1.23456789012345677E18. The two values are not the same.

If the database does not return large values, do not use this parameter and ensure that the models do not include columns with the DECIMAL(0,0) data type. This allows the query service to use a data type that requires less memory than the DECFLOAT type.