При выполнении SELECT в otl4 (среда OCI/Oracle 11) и попытке получить типы возвращаемых данных через describe_select, поля базы типа NUMBER otl описывает в otl_column_desc.otl_var_dbtype как otl_var_double (при этом, значение otl_column_desc.prec == 0 и otl_column_desc.scale == 129, смысл чего от меня ускользает...)
Получается неопределённость: даблом представляются и поля, заведомо не имеющие дробной части (ID типа NUMBER), и поля, которые потенциально дробную часть содержать могут (AMOUNT типа NUMBER).
Как бы наиболее правильно, и с наименьшими накладными расходами, различить эти два случая? Т.е. если я считал из стрима double v, что писать в CheckInt(v) для того, чтобы правильно работал код
if (CheckInt(v))
printf("%.0f", v);
else
printf("%.2f, v);
P.S. Можно еще передать в CheckInt() otl_column_desc, но, насколько я понимаю, толку от этого не прибавится...