25 / 6
равно 4⅙
не равно 4.16
, если вы явно не округляете результат до двух десятичных знаков.
Для большей гибкости и точности при использовании десятичных чисел в Db2 вы можетерассмотреть возможность использования DECFLOAT
. Например,
$ db2 "values 25::decfloat/6"
1
------------------------------------------
4.166666666666666666666666666666667
При округлении значений DEFFLOAT Db2 использует значения специального регистра CURRENT DECFLOAT ROUNDING MODE для определения режима округления. По умолчанию это ROUND_HALF_EVEN
(и это единственные значения, допустимые в некоторых конфигурациях Db2).
db2 "values ROUND(25::decfloat/6,2)"
1
------------------------------------------
4.17
1 record(s) selected.
для усечения (т.е. округления вниз), тогда вы можете использовать DECIMAL
и FLOAT
s, как предложил Маоили чтобы избежать проблем с двоичными числами с плавающей запятой, просто DECIMAL
s
$ db2 "values DECIMAL(25::DECIMAL/6,7,2)"
1
---------
4.16
1 record(s) selected.