1. Ruby / Говнокод #17618

    −94

    1. 1
    2. 2
    t.decimal  "inn",              precision: 10, scale: 0, null: false
        t.decimal  "kpp",              precision: 9,  scale: 0, null: false

    Возможно я чего-то не понимаю. Но integer нынче не в моде?

    Запостил: FancyDancy, 11 Февраля 2015

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

    • А в рубишный integer входит 10-12 знаков?
      Ответить
      • Входит конечно. Но это поле в базе Postgres, пытаюсь понять почему тут decimal.
        Ответить
        • Но, судя по всему, этот код работает с СУБД? Вот там-то эти 10-12 знаков в integer не влезут. Может из-за этого?
          Ответить
          • Integer в postgres держит до 10 знаков от -2147483647 до 2147483647. Так что КПП можно вполне уместить в нем. А для ИНН использовать bigint.
            Ответить
            • > до 10 знаков
              До 9! В десятом только 0 и 1 работают, двойка частично, остальные цифры тупо не влезают.

              > А для ИНН использовать bigint.
              Ну тоже вариант. А чем decimal то не нравится? Он не такой уж и медленный...

              P.S. А нули в начале ИНН бывают? А то может быть вообще строку надо, чтобы не париться с паддингом нулями под нужную длину... У нас ИНН'ки везде строками, байтоёбством не страдаем :)
              Ответить
              • Ну вот: Республика Адыгея 01

                Так что я бы всё-таки строку поюзал вместо integer/decimal. Подводных камней на порядок меньше.
                Ответить
                • Реально, лучше б строку.
                  Ответить
                  • Причем на 12 символов. Не обижайте индивидуальных предпринимателей.
                    Ответить
                • кстати, в коммерческом ПО как раз строка и выделяется. Впервые вижу чтобы в числовом поле пытались хранить. БИК и номер счёта тоже в числовое поле запихнули?))
                  Ответить
                  • Мне попадался диплом, в котором номер паспорта(!) в инт засунули.

                    http://govnokod.ru/16195
                    Ответить
        • > Но это поле в базе Postgres, пытаюсь понять почему тут decimal
          Потому что integer там 32-битный.
          Ответить
    • А цены, небось, во флоате хранятся.
      Ответить
    • Вы инн'ы складывать или делить собрались? может возводить в степень? BigInt, Decimal того этого...
      Ответить

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