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

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

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

авторArray ( [0] => -3.00000000 )
иии?
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283930
ps. интересуют не только результаты в select'ах, но и в интерпретаторах выражений ЯВУ (pascal, c#, powerbuilder, java etc)
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283931
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в СУБД и в EXCEL все верно считается. А что собственно должно быть?
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283957
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
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283974
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микро-калькулятор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
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283978
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonbnВо, блин. Firebird 2.1 выдал муйню: -36
Почему?Бага. Старая. Исправление уже готово.
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36283982
hvlad,

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

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

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

1. Приоритет унарного минуса меньше чем оператора деления. Поэтому минус в данном выражении относится к результату деления целого 4 на целое 3.
2. Результат деления двух целых - целое:Приоритет типов данныхЕсли оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
Поэтому он равен 1. Получается деление 36 на -1.
Кстати, п.1 неочевиден. Чаще всего унарные операторы имеют более высокий приоритет, чем бинарные.
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36289501
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микро-калькуляторЧто будет в итоге ?
Код: 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
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36289596
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

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

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

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

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

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

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

так есть.
А как "надо" - вопрос дискуссионный.В стандарте я не нашёл приоритетов операций.
Но, есть ли ещё один язык программирования, в котором унарные плюс\минус имеют приоритет не выше, чем другие арифметические действия ?
Mumps?
Но точно не помню.
...
Рейтинг: 0 / 0
Какой у вас результат ычисления вот этого: 36/-4/3 ?
    #36289814
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 79, страница 1 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какой у вас результат ычисления вот этого: 36/-4/3 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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