1. C# / Говнокод #17523

    +104

    1. 1
    2. 2
    3. 3
    4. 4
    if(number / 2 == ((int)number / 2))
    {
    ...
    }

    Проверка на чётность.

    Запостил: yaguarvl, 27 Января 2015

    Комментарии (33) RSS

    • var number = 42; ?
      Ответить
      • Да, забыл указать, что number это float.
        Ответить
        • Проверка флоата на чётность...
          Ответить
          • На бесконечности зафейлится.
            Ответить
            • Не зафейлится.
              Бесконечности в IEEE-представлении чётные, а вот NaN - чистейшая неопределённость.
              Ответить
              • (Infinity | 0) / 2 = 0 По версии ж.скрипта по крайней мере. Как там с шишарпом - не знаю.
                Ответить
                • > Как там с шишарпом
                  Судя по мануалам, Convert.ToInt32 бросает исключение, если аргумент выходит за диапазон значений Int32.
                  Ответить
                  • Исключение - это да, а вот convert'а тут нет. Только каст.
                    Ответить
          • А что делать! Балбесы-проектировщики забыли добавить в IEEE 754 бит четности. Вот и приходиться извращаться :(
            Ответить
            • И бит простоты.
              Ответить
              • Вслед за оопшным бумом
                Придёт бит простоты
                Этот бит мне по душе
                Я люблю быть со всеми на ты.

                Бит простоты.
                Бит простоты.
                Ответить
          • Любой флоат и дабл - четный потому что делиться на 2 без остатка

            http://ideone.com/Uq7pdD
            Ответить
            • А почему зелёным то? Если нет ограничения на то, чтобы частное было целым - остаток всегда 0, и всё на всё делиться.
              Ответить
              • Потому что понятие четности существует только для N. Это как треугольник 5 5 10 - нарушает договоренности. ь
                Ответить
                • для Z, конечно Z
                  Ответить
                • > треугольник 5 5 10 - нарушает договоренности
                  но не на сфере

                  Хотя, я понял, о чём речь. В общем-то, я не потроллить пришёл, а уточнить. Я не силён в формальностях.

                  Действительно оно так и на действительные не расширяется? На Википедии есть только "чётность - делимость на 2" и рассказы о делимости для целых чисел. Но зачем Википедия, когда есть компетентный Кегдан?
                  Ответить
                  • Деление с остатком на действительные можно расширить - достаточно сказать, что частное должно быть целым. А вот четность там бессмысленна.
                    Ответить
                  • Вообще я могу обманывать. но кажется есть более формальное определение - четным является то число. которое входит в класс вычетов 0 по модулю 2
                    Ответить
                    • Т.е. 2.0, 4.0 и т.п. всё же чётные? Похоже на правду.
                      Ответить
                      • Тут уже точно сказать не могу - на счетных множествах классы вычетов выглядят просто, а R - несчетное. Хз как правильно составить. И можно ли.
                        Ответить
                        • Да в таком классе даже умножать нельзя будет, нах он нужен.
                          Возьмём типа класс вычетом по модулю 1.
                          0.1*0.1 = 0.01
                          1.1*1.1 = 1.21
                          Умножение эквивалентных чисел даёт неэквивалентный результат.
                          Ответить
                        • http://math.stackexchange.com/questions/92451/can-decimal-numbers-be-considered-even-or-odd
                          Ответить
                          • Есть же формальное определение:
                            четное факторируется, как 2·k, где k∈ℤ, нечетное 2·k+1
                            если кому не нравится деление
                            Ответить
            • >делиться
              С кем, простите, он будет делиться?
              Ответить
              • Я помог тебе почувствовать себя умнее
                Не за что)
                Ответить
                • > Не за что)
                  Ну зачем ты это слово разбил, зачем...
                  Ответить
                  • Ке?
                    Ответить
                    • Борманд как бы говорит: "Я помог тебе почувствовать себя умнее".
                      На самом деле, если изредка делать ошибки, окружающим будет казаться, что делаешь их всегда. Чисто из-за экономии мышления и экстраполяции.
                      http://www.gramota.ru/spravka/rules/?rub=def&text=19_24
                      Ответить
                      • не, я знаю что я глупый
                        Ответить
                        • > что я глупый
                          Ну зачем ты это слово разбил, зачем...
                          Ответить
                      • В рот мне ноги. А ведь "не за что" пишется раздельно. Руки оторвать тому, кто проектировал этот язык..
                        Ответить
                        • Мой любимый опус о русском языке
                          http://cs624918.vk.me/v624918486/13bc9/bsMIx0mPLZs.jpg
                          Ответить
    • (int)(number / 2))
      Ответить

    Добавить комментарий