Функция ROUND |
|||||||||||||||||
Рассмотрим такую задачу. Посчитать средний размер жесткого диска ПК. Результат представить с двумя знаками после десятичной точки. Выполнив запрос мы получим такой результат:
Чтобы выполнить требуемое округление можно воспользоваться функцией ROUND:
Второй аргумент этой функции как раз указывает число десятичных знаков результата. Как видно, результат был округлен по арифметическим правилам. Однако у функции ROUND есть третий необязательный аргумент, который говорит о том, округлять ли результат (значение 0 - принимается по умолчанию) или отбрасывать цифры сверх удерживаемых (ненулевое значение). Т.е. если мы перепишем наш запрос так: то получим другой результат:
Кстати, округлять можно до любого знака, не только десятичного. Например, чтобы округлять до десятков, сотен и т.д., используются отрицательные значения второго аргумента. Следующий запрос округляет результат до десятков.
Следует отметить, что функция ROUND выполняет округление, но не меняет тип результата. Т.е. если аргумент будет иметь тип dec(12,6), то и результат округления будет того же типа, а именно,
В этом легко убедиться, выполнив запрос
Поэтому, если вы хотите избавиться от хвостовых нулей, используйте преобразование к нужному вам типу, например, dec(12,2). Тогда нам и функция ROUND не потребуется. :-) |