Имя: Пароль:
IT
 
Математика в ms-sql доставила...
0 mikecool
 
14.05.13
10:15
select 75 / 100 * 100
результат = 0
select (75 / 100) * 100
результат = 0
почему? ))
1 mikecool
 
14.05.13
10:16
select 75 * 100 / 100
результат = 75
wtf??
2 Mikeware
 
14.05.13
10:16
патамушта целочисленная
3 cw014
 
14.05.13
10:16
Потому что значения типа Integer у тебя идут
4 ДенисЧ
 
14.05.13
10:16
select 75.0 / 100 * 100
5 Ёпрст
 
гуру
14.05.13
10:17
(0)
select 75.0 / 100 * 100
делай и привет.. или в начале на 1.0 умножай.
6 mikecool
 
14.05.13
10:18
вротмненоги...
7 Тоненький Клиент
 
14.05.13
10:18
select 75.0/100*100
8 Balabass
 
14.05.13
10:18
а что эта команда делает?
9 ДенисЧ
 
14.05.13
10:18
(6) да вообще-то такая же фигня и в C/C++...
10 х86
 
14.05.13
10:19
(1)+10500
у мя 75, что я делаю не так???
11 mikecool
 
14.05.13
10:19
вот как такое можно предположить в запросе?
откуда мен знать - целое число в поле или нет?
12 mikecool
 
14.05.13
10:20
(9) аааа, они окружают!!! )
13 floody
 
14.05.13
10:20
(8) выбирает значение 75.0/100*100 имхо
14 Ёпрст
 
гуру
14.05.13
10:20
(11) скулю тоже лень "думать" - неявное преобразование типа к первому операнду.. это везде так и в 1с в том числе.
15 mikecool
 
14.05.13
10:20
+11 кастовать в децимал какой нить?
16 Balabass
 
14.05.13
10:21
(13) откуда выбирает? Ведь должен быть указан источник? нет?
17 organizm
 
14.05.13
10:21
(11) потому что ты не тру-программист )))
18 mikecool
 
14.05.13
10:21
(14) да вот столкнулся с расчетом процентов от целого числа и долго думал - почему ноль )
19 mikecool
 
14.05.13
10:21
(16) нет
20 Balabass
 
14.05.13
10:22
SELECT *
FROM

А как тогда? Я не понимаю.
21 mikecool
 
14.05.13
10:22
(20) ничего, со временем поймешь
я вот сабжа сразу не понял
22 ДенисЧ
 
14.05.13
10:23
(21) потому что (17) :-)
23 mikecool
 
14.05.13
10:24
select round(cast(75 as decimal)/100 * 100, 0)
костыли )))
24 Жан Пердежон
 
14.05.13
10:24
тс нуб и опозорилсо
25 mikecool
 
14.05.13
10:24
(22) да и ладно )) указатели я так и не понял (
(24) я тебя тоже люблю
26 ДенисЧ
 
14.05.13
10:25
(25) "указатели я так и не понял " потому чо (17) :-)))
27 Ёпрст
 
гуру
14.05.13
10:25
(15) не спасет тут каст, разве что, если первый операнд будешь кастовать, проще на 1.0 помножить и всё.
28 floody
 
14.05.13
10:26
(20) напиши select 1 и выполни запрос
29 mikecool
 
14.05.13
10:26
(27) да, как раз первый операнд и имел ввиду в касте
(26) а может оно и к лучшему? )
30 mikecool
 
14.05.13
10:26
(28) не ломай человеку мозг )))
31 Balabass
 
14.05.13
10:27
(28) Щас напишу. Я СКЛ не знаю вообще.
32 Ковычки
 
14.05.13
10:28
select 2147483649 / 2147483649 * 75 / 100 * 100
33 Balabass
 
14.05.13
10:28
а зачем это вообще? Где можно применить подобную операцию?
34 mikecool
 
14.05.13
10:29
(33) не парься - я написал так, чтобы просто проверить результат мат.операции, т.к. данных у меня не было
35 Balabass
 
14.05.13
10:30
(34) ну интересно жеж
36 Ёпрст
 
гуру
14.05.13
10:30
(33) получить табличку цифр, например
37 mikecool
 
14.05.13
10:30
+34 + такая запись даст гарантированно 1 запись в результате запроса по типу:
выбрать 1
объединить
выбрать что то откуда то  -- вот здесь мб пустой результат
38 Зойч
 
14.05.13
10:31
юзай cast
39 Balabass
 
14.05.13
10:31
(37) ммм....
40 Ёпрст
 
гуру
14.05.13
10:32
(32) хитро
41 mikecool
 
14.05.13
10:33
(32) как выбрано 2147483649 ?
42 mikecool
 
14.05.13
10:34
+41 пробую другие сочетания - не работает )
43 Зойч
 
14.05.13
10:34
(41) max int32
44 Ёпрст
 
гуру
14.05.13
10:34
(42)  select 2147483648 / 2147483648
45 mikecool
 
14.05.13
10:35
(43) ясно
46 Ёпрст
 
гуру
14.05.13
10:36
(43) ага
:)
47 HeroShima
 
14.05.13
10:40
(9) неа
48 HeroShima
 
14.05.13
10:40
(47) пардон. да-а
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший