На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (5) « Первая ... 3 4 [5]  все  ( Перейти к последнему сообщению )  
> Деление в языках программирования
   
Какое деление вы считаете более логичным (см. первое сообщение)
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Цитата Bug Hunter @
    Похоже я понял - это соревнование по чтению форума жопой за пост председателя клуба читателей форума жопой.

    Тебя это так задело? Бедняжка. Как же плохо быть тобой :D
      Цитата OpenGL @
      Лично я считаю, что как в питоне или, прости господи, в паскале - всегда обычное, а для целочисленного надо использовать другой оператор - гораздо логичнее.

      А какой тип возвращает в питоне функция взятия корня второй степени?
        math.sqrt принимает вещественное число в качестве аргумента и возвращает вещественное число как результат.
        cmath.sqrt принимает комплексное число в качестве аргумента и возвращает комплексное в качестве результата.
        Куда интереснее ведут себя функция pow (с двумя аргументами) и операция **, которые могут возвращать в качестве результата и целое, и вещественное, и комплексное числа, в зависимости от того, что получается.

        Добавлено
        Это в Python 3. Но похоже и в предыдущем так же было.
          Цитата amk @
          math.sqrt принимает вещественное число в качестве аргумента и возвращает вещественное число как результат.
          cmath.sqrt принимает комплексное число в качестве аргумента и возвращает комплексное в качестве результата.

          А деление, значит, принимает целые, но возвращает вещественные :crazy:
            Цитата MyNameIsIgor @
            А деление, значит, принимает целые, но возвращает вещественные
            Ну, в sqrt тоже можно передать целое, он всё равно вернёт вещественное.
              Цитата amk @
              Цитата MyNameIsIgor @
              А деление, значит, принимает целые, но возвращает вещественные
              Ну, в sqrt тоже можно передать целое, он всё равно вернёт вещественное.

              А почему не комплексное? :crazy:
                Потому что решили, что math.sqrt должен, как и в других языках, возвращать вещественное.
                  Проголосовал за №2 потому, что считаю, что чем ближе к записи в математике, тем правильнее. В математике "/" означает "разделить", "1/2" в математике будет равно "0.5", и тут не может быть вариантов. А целочисленное деление - это отражение конструкции реального процессора, это может быть полезно с точки зрения оптимизации, но это не математическое деление, даже если брать деление для первоклашек, которые ещё дробей не знают, то там деление целых чисел возвращает ДВА результата - частное и остаток.
                  И ещё, вариант №1 плохо стыкуется с неопределённым типом данных (Variant).
                    Цитата Mikle @
                    И ещё, вариант №1 плохо стыкуется с неопределённым типом данных (Variant).

                    А что, неопределенный тип данных (Variant) еще и делить можно? :blink: Мне казалось для начала в таких случаях необходимо сделать преобразование типа.
                      Я отвечал, прочитав только первую страницу (попадаюсь иногда на это, кажется, что вижу последний пост). Во многом повторился.
                      Цитата KILLER @
                      А что, неопределенный тип данных (Variant) еще и делить можно?

                      А о каком ЯП речь? Тема, вроже как, про ЯП вообще, вот так я и отвечал.
                      А делить Variant - можно, если речь про VB.
                        Цитата Mikle @
                        А делить Variant - можно, если речь про VB.

                        И что получится в результате, если например в вариант запихали BSTR строку, и поделили это на 3 ?
                          Цитата KILLER @
                          И что получится в результате, если например в вариант запихали BSTR строку, и поделили это на 3 ?

                          Создаёшь текстовый документ с таким содержимым:
                          ExpandedWrap disabled
                            dim a,b
                            a="345"
                            b=3
                            msgbox a/b

                          Переименовываешь его в test.vbs.
                          Сохраняешь... запускаешь... ответ 115!
                            Цитата Mikle @
                            Переименовываешь его в test.vbs.
                            Сохраняешь... запускаешь... ответ 115!

                            Так я не то имел ввиду. Но спасибо за код. Немного подправил:
                            ExpandedWrap disabled
                              dim a,b
                              a="_34a5"
                              b=3
                              msgbox a/b

                            Получил исключение, как и ожидалось. Т.е. фраза:
                            Цитата Mikle @
                            И ещё, вариант №1 плохо стыкуется с неопределённым типом данных (Variant)

                            Лишена смысла. Так как такие типы как Variant делить без приведения типа слишком опасно. Мы же не знаем что он там будет хранить.
                            Сообщение отредактировано: KILLER -
                              Цитата KILLER @
                              такие типы как Variant делить без приведения типа слишком опасно.

                              В общем согласен, по крайней мере в применении к VB. Тут Variant может содержать даже не строку, а вообще объект. Но это, скорее, чересчур вольное приведение типов в VB, в противовес к чересчур жёсткому контролю в том же шарпе. Скажем так, не Variant, а некий "Number", то есть неопределённый тип, но только для чисел, вообще мог бы вполне существовать.
                              А в бейсике, по крайней мере для строк, если уж приводить их тип автоматически к числовому, можно было сделать логичнее - чтобы приведение работало аналогично функции Val(), для всех строк, не интерпретируемых как число, возвращать 0.

                              Сообщения были разделены в тему "Spam"
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0422 ]   [ 18 queries used ]   [ Generated: 28.03.24, 14:10 GMT ]