SET DECFLOAT ROUND
Оператор SET DECFLOAT ROUND
изменяет режим округления для текущей сессии.Поддерживаются следующие режимы округления совместимые со стандартом IEEE:
- CEILING
-
Округление сверху. Если все отбрасываемые цифры равны нулю или знак числа отрицателен, то последняя не отбрасываемая цифра остаётся прежней. В противном случае последняя не отбрасываемая цифра инкрементируется на единицу (округляется в большую сторону).
- UP
-
Округление по направлению от нуля (усечение с приращением). Отбрасываемые значения игнорируются.
- HALF_UP
-
Округление к ближайшему значению. Используется по умолчанию. Если результат равноудаленный, выполняется округление в большую сторону. Если отбрасываемые значения больше чем или равны половине (0,5) единицы в следующей левой позиции, последняя не отбрасываемая цифра инкрементируется на единицу (округляется в большую сторону). В противном случае отбрасываемые значения игнорируются.
- HALF_EVEN
-
Округление к ближайшему значению. Если результат равноудаленный, выполняется округление так, чтобы последняя цифра была четной. Если отбрасываемые значения больше половины (0,5) единицы в следующей левой позиции, последняя не отбрасываемая цифра инкрементируется на единицу (округляется в большую сторону). Если они меньше половины, результат не корректируется, то есть отбрасываемые знаки игнорируются. В противном случае, когда отбрасываемые значения точно равны половине, последняя не отбрасываемая цифра не меняется, если она является четной и инкрементируется на единицу (округляется в большую сторону) в противном случае (чтобы получить четную цифру). Этот режим округления называется также банковским округлением и дает ощущение справедливого округления.
- HALF_DOWN
-
Округление к ближайшему значению. Если результат равноудаленный, выполняется округление в меньшую сторону. Если отбрасываемые значения больше чем или равны половине (0,5) единицы в следующей левой позиции, последняя не отбрасываемая цифра декрементируется на единицу (округляется в меньшую сторону). В противном случае отбрасываемые значения игнорируются.
- DOWN
-
Округление по направлению к нулю (усечение). Отбрасываемые значения игнорируются.
- FLOOR
-
Округление снизу. Если все отбрасываемые цифры равны нулю или знак положителен, последняя не отбрасываемая цифра не меняется. В противном случае (знак отрицателен) последняя не отбрасываемая цифра инкрементируется на единицу.
- REROUND
-
Округление к большему значению, если округляется 0 или 5, в противном случае округление происходит к меньшему значению.
SET DECFLOAT ROUND HALF_DOWN;
Режимы округления | 12.341 | 12.345 | 12.349 | 12.355 | 12.405 | -12.345 |
---|---|---|---|---|---|---|
CEILING |
12.35 |
12.35 |
12.35 |
12.36 |
12.41 |
-12.34 |
UP |
12.35 |
12.35 |
12.35 |
12.36 |
12.41 |
-12.35 |
HALF_UP |
12.34 |
12.35 |
12.35 |
12.36 |
12.41 |
-12.35 |
HALF_EVEN |
12.34 |
12.34 |
12.35 |
12.36 |
12.40 |
-12.34 |
HALF_DOWN |
12.34 |
12.34 |
12.35 |
12.35 |
12.40 |
-12.34 |
DOWN |
12.34 |
12.34 |
12.34 |
12.35 |
12.40 |
-12.34 |
FLOOR |
12.34 |
12.34 |
12.34 |
12.35 |
12.40 |
-12.35 |
REROUND |
12.34 |
12.34 |
12.34 |
12.36 |
12.41 |
-12.34 |