Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

округлить число [D6, XP]


Marat ©   (2006-12-21 07:35:00) 

Мне необходимо, чтобы в выборке
select 1/4
результат округлялся до максимума, т.е. вместо 0 мне необходимо получить 1


Anatoly Podgoretsky   (2006-12-21 12:01:00) [1]

> Marat  (21.12.2006 11:42:13)  [13]

Компьютерная Математика говорит, что Integer(1)/Integer(4)=Integer(0), а Float(1)/Integer(4)=Float(0.25)
Ты должен явно указывать тип значений, если хочешь получить явный результат, при неявном и получаешь неявный и удивляешься. Даже не бумаге делая данные расчеты ты неявно в уме приводишь их к Float, но эта неявность не совпадает с неявностью интерпритатора SQL сервера.


Anatoly Podgoretsky   (2006-12-21 11:53:00) [2]

> Marat  (21.12.2006 11:27:11)  [11]

Потому что надо читать сопровождающую документацию, объем ее настолько большой, что на форуме не выучишь и одного процента, а понять теорию баз и компьютерную математику вообще не удастся.


Marat   (2006-12-21 11:42:00) [3]

спасибо.
раньше считал что 1/4=0.25
оказывается не всегда так!


ЮЮ   (2006-12-21 11:35:00) [4]

потому, что 1 / 4 и 1.0 / 4 разного типа результаты, наверное.


Marat   (2006-12-21 11:27:00) [5]

а почему в анализере делаю
select ceiling(1/4)
0
а если
select ceiling(0.25)
1
???
все получилось, просто интересно.


ЮЮ   (2006-12-21 11:21:00) [6]

CEILING(a/b)


Marat   (2006-12-21 11:17:00) [7]

как сделать в проекте- знаю.
можно ли сразу из запроса?


Marat   (2006-12-21 11:16:00) [8]

запрос из MS SQL 2000
select a/b from...inner join...
где a, b ненулевые поля (Integer) из разных таблиц.
результат   хочу
1                1
2,5              3
1,2              2
4,1              5
7                 7
...               ...
можно так или нет?


ЮЮ   (2006-12-21 10:58:00) [9]

CInt(1/4+0.5)
CEILING(0.25)
Trunc(x)+1

Могуч и разнообразен язык SQL. Особенно на разных серверах. :)


Desdechado   (2006-12-21 10:53:00) [10]

Trunc(x)+1


ЮЮ   (2006-12-21 10:45:00) [11]

Select CEILING(0.25)


Stanislav   (2006-12-21 10:40:00) [12]

Marat ©   (21.12.06 07:35)  
извеняюсь  select не заметил, PZ наверное тоже...


sniknik   (2006-12-21 10:28:00) [13]

SELECT CInt(1/4+0.5)


Stanislav   (2006-12-21 10:25:00) [14]

math.SetRoundMode(rmUp) ;
showmessage(FloatToStr(math.RoundTo(5.1,0)));


PZ   (2006-12-21 10:16:00) [15]

Как вариант можно предложить следующее:

Var
 C : Integer;
 R : Real;

 If Round(R) < R then C := Round(R)+1
   else C := Round(R);


Наверх

Титульная страница Поиск, карта сайта Написать письмо