powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы изобразить на PL/SQL такую функцию...
15 сообщений из 40, страница 2 из 2
Как бы изобразить на PL/SQL такую функцию...
    #32134577
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве что > на >= заменить.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134581
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ося, это возвращает 1.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134583
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну слава богу, а то я уже думал что меня в упор игнорируют
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134591
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> ламка
> Можно нахадить логарифм от числа, а потом возводить 2 в степень "целая часть логарифма + 1"

все правильно, вы чего народ совсем элементарную математику не уважаете!


Код: plaintext
1.
power( 2 ,trunc(log( 2 ,N))+ 1 )
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134594
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, блин, это я и хотел сказать!
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134598
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О да, этот вариант прикольнее выглядит :) Хотя при x=0, x=1 считает не совсем правильно.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134599
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to MaxU:
И у вас прокольчик. Для числа 4 должно быть 8, а не 4.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQLWKS> select power( 2 ,trunc(log( 2 , 4 ))+ 1 )  from dual
      2 > 
      3 > 
POWER( 2 ,TR
 ----------
 
          4 
Выбрана  1  строка.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134602
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему, всё правильно. Я написал ниже насчёт случая y=x
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134603
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Softbuilder

вроде сказали >=
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134610
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, давайте завязывать потихоньку :)
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134615
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Scott:
"которая, принимая в качестве аргумента целое положительное число, возвращает ближайшее к нему большее целое, являющееся степенью двойки?"

Ну как-же подходит, если большее для 4 будет 8.
Или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134626
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ниже поправился -
Код: plaintext
Да, нужно условие откорректировать -  "...возвращает ближайшее к нему большее или равное ему целое..." 
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134631
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ok, понял.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134637
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorry, не заметил корректировки условия...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create or replace
function aaa(n in number)
return number as
  s number;
begin

  if (n =  0 ) then
     return  1 ;
  end if;
  
  s := log( 2 ,n);
  
  if (trunc(s) = s) then
     return power( 2 ,s);
  else
     return power( 2 ,trunc(s)+ 1 );
  end if;

end;
/
show error


...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134654
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to MaxU:
Ну ты чего, и так всё работает.
Дело в том, что
select to_char(log(2,4),'99.99999999999999999999999999999999999999') from dual
даёт следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQLWKS> select to_char(log( 2 , 4 ),'99.99999999999999999999999999999999999999')  from dual
      2 > 
      3 > 
TO_CHAR(LOG( 2 , 4 ),' 99 . 999999999999999999999 
 ------------------------------------------
 
   1 . 99999999999999999999999999999999999998 
Выбрана  1  строка.


Естественно что trunc() - даёт 1.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы изобразить на PL/SQL такую функцию...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]