Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какой у вас результат ычисления вот этого: 36/-4/3 ? / 25 сообщений из 79, страница 1 из 4
30.10.2009, 21:22
    #36283273
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Всем привет.

Сабж. Введите это выражение (БЕЗ СКОБОК!) в MS Excel, затем в своей СУБД (select ... from ...)

Что будет в итоге ?
...
Рейтинг: 0 / 0
31.10.2009, 00:35
    #36283416
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
по-моему баян
...
Рейтинг: 0 / 0
31.10.2009, 08:35
    #36283523
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Куда рыть ? дайте тынц, плз.
...
Рейтинг: 0 / 0
31.10.2009, 16:57
    #36283834
leonbn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Во, блин. Firebird 2.1 выдал муйню: -36
Почему?
...
Рейтинг: 0 / 0
31.10.2009, 17:05
    #36283837
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Код: plaintext
1.
2.
 $sql = mysql_query('SELECT 36/-4/3');
 $q = mysql_fetch_row($sql);
 print_r($q);

авторArray ( [0] => -3.00000000 )
иии?
...
Рейтинг: 0 / 0
31.10.2009, 19:19
    #36283930
Какой у вас результат ычисления вот этого: 36/-4/3 ?
ps. интересуют не только результаты в select'ах, но и в интерпретаторах выражений ЯВУ (pascal, c#, powerbuilder, java etc)
...
Рейтинг: 0 / 0
31.10.2009, 19:22
    #36283931
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
И в СУБД и в EXCEL все верно считается. А что собственно должно быть?
...
Рейтинг: 0 / 0
31.10.2009, 20:04
    #36283957
Какой у вас результат ычисления вот этого: 36/-4/3 ?
HettИ в СУБД и в EXCEL все верно считается. А что собственно должно быть?
1) в экселе ввожу в ячейку формулу:
Код: plaintext
= 36 /- 4 / 3 
- получаю ответ -3 (минус три); то есть вроде как всё понятно: он разделил сначала 36 на -4, получил -9, а затем это число разделил на 3 и получил -3 .
2) соединяюсь с СУБД Firebird 2.1 через isql, даю вот такую команду:
<fb_home_path>\bin\isql -user myself -p mypass -m -i calc.sql -o calc.log 192.168.0.1:<disk:\path\fb_database.fdb>
в скрипте calc.sql при этом пишу:
Код: plaintext
1.
select  36 /- 4 / 3  as test from rdb$database;
commit;
- и вижу в логе calc.log:
TEST
=========================
-27.00000000000000

3) открываю MS SQL Studio (2005 XE), пишу:
Код: plaintext
select  36 /- 4 / 3 
- результат: -36 .

А вот теперь встречный вопрос: а действительно, что должно быть в итоге ? ;-)
...
Рейтинг: 0 / 0
31.10.2009, 20:27
    #36283974
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Микро-калькуляторps. интересуют не только результаты в select'ах, но и в интерпретаторах выражений ЯВУ (pascal, c#, powerbuilder, java etc)Насчет Паскаль/Дельфи можешь не волноваться. Там знак "/" строго для деления чисел с плавающей запятой, а для целочисленых используется "div". Ну и выполнение операций слева направо, с учетом "ранговости", т.е. (*/) (+-), как в математике.

Эффект (имхо) появится если :
1. Выражение воспримется целочисленым, сообразно операндам (36,3,4)
2. и вычислится справа налево
тогда -4/3 = -1 и потом 36/-1 = -36
.. а почему справа налево, потому что есть некая неоднозначность в выражении, знак минус можно принять за знак 4-ки и за минус, и возможно парсер выражения не срабатывает правильно.

select 36/(-4)/3 from rdb$database
срабатывает правильно

вообще-то всегда когда есть сомнения в правильности порядка вычислений, надо пользоваться скобочками, они не занимают много места ;)
...
Рейтинг: 0 / 0
31.10.2009, 20:32
    #36283978
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
leonbnВо, блин. Firebird 2.1 выдал муйню: -36
Почему?Бага. Старая. Исправление уже готово.
...
Рейтинг: 0 / 0
31.10.2009, 20:33
    #36283982
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvlad,

а тогда что получается, он -27 получил как (36/(-4))*3 ?
...
Рейтинг: 0 / 0
31.10.2009, 20:35
    #36283984
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Микро-калькуляторвижу в логе calc.log
это еще и от диалекта зависит. У тебя база в 1-м диалекте, вычисление идет в double, получаешь -27. В 3-м диалекте вычисление пойдет в integer и получится -36.
...
Рейтинг: 0 / 0
31.10.2009, 20:36
    #36283986
Какой у вас результат ычисления вот этого: 36/-4/3 ?
S.G.надо пользоваться скобочками, они не занимают много места ;)хе-хе-хе... :-) вопрос как раз и возник из-за того, что в коде эти скобочки были случайно(?) пропущены одним нашим торопливым кодером. Только выражение, ес-сно, было немного другое, с переменными. И когда подставили конкретные числа, то удивились немало :-)
...
Рейтинг: 0 / 0
31.10.2009, 20:37
    #36283987
Какой у вас результат ычисления вот этого: 36/-4/3 ?
dimitrМикро-калькуляторвижу в логе calc.log
это еще и от диалекта зависит. У тебя база в 1-м диалекте, вычисление идет в double, получаешь -27. В 3-м диалекте вычисление пойдет в integer и получится -36.фига се... спасибо, этого я не знал!
...
Рейтинг: 0 / 0
31.10.2009, 20:48
    #36283995
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Микро-калькулятор в коде эти скобочки были случайно(?) пропущены одним нашим торопливым кодером.
------ offtop begin ---------
торопливым? он еще не постиг дао ...

LAZINESS
Success is a journey, not a destination. So stop running.

:)
------ offtop end ---------
...
Рейтинг: 0 / 0
03.11.2009, 16:36
    #36288896
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
для Microsoft SQL Server Приоритет операторов (Transact-SQL)
Приоритет типов данных (Transact-SQL)

1. Приоритет унарного минуса меньше чем оператора деления. Поэтому минус в данном выражении относится к результату деления целого 4 на целое 3.
2. Результат деления двух целых - целое:Приоритет типов данныхЕсли оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
Поэтому он равен 1. Получается деление 36 на -1.
Кстати, п.1 неочевиден. Чаще всего унарные операторы имеют более высокий приоритет, чем бинарные.
...
Рейтинг: 0 / 0
03.11.2009, 21:20
    #36289501
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Микро-калькуляторЧто будет в итоге ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Connected to Oracle Database 10g Express Edition Release  10 . 2 . 0 . 1 . 0  
Connected as test


SQL> select  36 /- 4 / 3  from dual;

    36 /- 4 / 3 
----------
        - 3 
...
Рейтинг: 0 / 0
03.11.2009, 22:53
    #36289596
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
iap,

В приведенной ссылке отсутствует приоритет унарных операторов.
...
Рейтинг: 0 / 0
03.11.2009, 22:56
    #36289600
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvladiap,

В приведенной ссылке отсутствует приоритет унарных операторов.Тьфу, они унарный минус и плюс как "+ (положительное), - (отрицательное)" обозвали.

Сейчас набежит толпа любителей МССКЛ, утверждая, что так и надо
Я о приоритете
...
Рейтинг: 0 / 0
03.11.2009, 23:58
    #36289674
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvlad,

так есть.
А как "надо" - вопрос дискуссионный.
...
Рейтинг: 0 / 0
04.11.2009, 00:51
    #36289726
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
lockyhvlad,

так есть.
А как "надо" - вопрос дискуссионный.В стандарте я не нашёл приоритетов операций.
Но, есть ли ещё один язык программирования, в котором унарные плюс\минус имеют приоритет не выше, чем другие арифметические действия ?
...
Рейтинг: 0 / 0
04.11.2009, 01:05
    #36289736
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvlad
Но, есть ли ещё один язык программирования, в котором унарные плюс\минус
имеют приоритет не выше, чем другие арифметические действия ?

Кстати, язык, в котором бы унарные операции было разрешено применять к
результату других унарных операций лично мне не попадался. Т.е. с
синтаксической точки зрения 36/+-4 это недопустимая конструкция. Хотя,
может, я просто слишком осторожничал при наборе... Но с Сях, например,
при 36/--4 возникает неоднозначность.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.11.2009, 01:09
    #36289738
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
Dimitry SibiryakovНо с Сях, например,
при 36/--4 возникает неоднозначность.Здесь нет неоднозначности, т.к. "--" это самостоятельный оператор.
...
Рейтинг: 0 / 0
04.11.2009, 01:45
    #36289753
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvladlockyhvlad,

так есть.
А как "надо" - вопрос дискуссионный.В стандарте я не нашёл приоритетов операций.
Но, есть ли ещё один язык программирования, в котором унарные плюс\минус имеют приоритет не выше, чем другие арифметические действия ?
Mumps?
Но точно не помню.
...
Рейтинг: 0 / 0
04.11.2009, 08:44
    #36289814
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой у вас результат ычисления вот этого: 36/-4/3 ?
hvladВ стандарте я не нашёл приоритетов операций.
Но, есть ли ещё один язык программирования, в котором унарные плюс\минус имеют приоритет не выше, чем другие арифметические действия ?
Для СУБД Caché арифметические операции не имеют приоритета: Arithmetic Operators .
Код: plaintext
1.
2.
3.
4.
select  36 /- 4 / 3  from dual -- результат: -3
select  36 /+- 4  from dual -- результат: -9
select  36 /'--4' from dual -- результат: +9
select  36 /- - 4  from dual -- результат: +9
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какой у вас результат ычисления вот этого: 36/-4/3 ? / 25 сообщений из 79, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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