2015-06-10 2 views
0

Я хочу преобразовать это значение «2167.124» в «2167.13», используя круглую функцию в оракуле 11g. Проблема в том, что он преобразует LIKE «2167.12» Но мне нужно «2167.13».Как округлить в оракуле

Пожалуйста, помогите, заранее спасибо

+2

Вот как округление работы. Вы всегда хотите «округлить», вне зависимости от ценности цифр? –

+0

Каковы ваши правила округления? – axxis

+0

Попробуйте найти функцию CEIL (и связанный с ней FLOOR) в Oracle, хотя вам может потребоваться сначала преобразовать в целое число. Или вы добавили бы 0.005 к исходному номеру, а затем к ROUND. Но что происходит, когда у вас есть «9.991», вы хотите, чтобы затем округлить до «10,00»? – TenG

ответ

2

Если вы хотите, чтобы преобразовать заданное значение 2167.12" в "2167,13" Пожалуйста, используйте этот

выберите CEIL (2167,124 * 100)/100 от двойного;

+0

Спасибо, что разрешили мою проблему. Но есть одна путаница, почему вы умножаете значение на 100 и снова деля 100? благодаря, – user3004110

1

Расширение на примере Сэма, умножая на 100 эффективно перемещает десятичную точку две позиции вправо, так что ваше значение становится 216712,4:

select 2167.124*100 as step1 from dual; 

    STEP1 
---------- 
    216712.4 

Вы тогда звоните ceil на то, чтобы найти «наименьшее целое число, которое больше или равно п»:

select ceil(216712.4) as step2 from dual; 

    STEP2 
---------- 
    216713 

Затем делением на 100 эффективно перемещает точку десятичной назад те же два места влево:

select 216713/100 as step3 from dual; 

    STEP3 
---------- 
    2167.13 

Ввод три шага в одну заявления получает:

select ceil(2167.124*100)/100 as result from dual; 

    RESULT 
---------- 
    2167.13 
Смежные вопросы