войти зарегистрироваться

Lifehack whois

индекс
0,00

Подробности о 17-значном глюке Visa

На днях некоторые владельцы карточек Visa получили завышенные счета за оплату рядовых услуг. В распечатках транзакций по карточке люди видели астрономическую сумму $23,148,855,308,184,500.00 (23,1 квадриллиона долларов) плюс штраф $15 за овердрафт по карточке. Эта сумма во много раз превышает мировой ВВП. Банки и компания Visa после непродолжительного разбирательства сообщили, что ошибка вызвана техническим глюком, но не раскрыли никаких подробностей.

Но на самом деле сумма ошибочно списанного платежа сама по себе выявляет природу ошибки. Вот посмотрите на это число

$23.148.855.308.184.500.00

Скорее всего, на карточке оно хранится как

2314885530818450000

Если перевести его в шестнадцатеричную систему, то мы получим

20 20 20 20 20 20 12 50

Большинство программистов C/C++ уже поняли, в чём ошибка, ведь hex 20 — это пробел. То есть в результате, скорее всего, ошибки программирования в ячейке данных оказались пробелы вместо нулей.

via slashdot

комментарии (72)

  • хммм. есть немалая доля смысла в вашем варианте=) браво!
  • Если все остальные покупки не вызывают проблем, то почему эта вызвала?
    • Видимо были какие-та нововведения или изменения у них, вот и не просчитали
  • Молодец, хорошо перевел! ;)
    • К чему такая ирония? :) Он вроде этого и не скрывает.
      • Собственно, при чем тут ирония! Я просто не знаю английский, и похвалил человека!..
        P.S. Люди странные существа, во всем ищут подковырку!
        • Как же вы оцениваете качество перевода если не знаете английский язык?
      • Может это оттого что топик не оформлен как перевод?
  • Это план Обамы по выходу из кризиса
  • раскрыть комментарий
    • Они уже и такое по НТВ делают?
      • ага, именно показовают;) что делать, кризис)
        зы: интересно, кого еще наберет НЛО?)
        • Извините, но Т9 ещё не совершенен.
          • О и Ы в Т9 находятся на разных клавишах.
          • Ужасный, ужасный Т9! Как он мог поменять букву 'ы' на 'о'? Расскажите, у меня так ни разу не получалось.
        • Я это и имел ввиду. Просто кто-то не понял сарказма :(
  • В американском штате Нью-Гэмпшир торговый автомат на бензоколонке взял с мужчины 23 квадриллиона долларов за пачку сигарет. Об этом 15 июля сообщает агентство Associated Press.

    Джош Мушински рассказал журналистам, что не сразу обнаружил, во сколько ему обошлись сигареты. Лишь через некоторое время после покупки он проверил свою кредитную карту и увидел цифру 23148855308184500. «Я думал, что кто-то купил Европу с помощью моей кредитной карточки», — сказал Мушински BBC News.
    • сколько можно уже это мусолить? я уже в восемнадцатый раз вижу эту как бы новость, которая яйца выеденного не стоит.
    • наверно, теперь он бросит курить
  • «Скорее всего, на карточке оно хранится как»
    Едва ли это так.
    • угу, на карточке оно вообще не хранится
  • Наверняка люди там при*%ели немного, когда увидели счёт.
  • Ага, тут тоже про это
    <a www.bbc.co.uk/russian/life/2009/07/090716_expensive_cigs.shtml?s="" >
  • >20 20 20 20 20 20 12 50
    >Большинство программистов C/C++ уже поняли, в чём ошибка, ведь hex 20 — это пробел.

    банковские системы наверно не оперируют целыми числами, и тем более строками.
    • А какими им, простите, числами оперировать? Неточными числами с плавающей точкой?
      • десятичными повышенной точности. для них же придумывали
        • Это просто догадки или реальное знание «предмета»?

          Если догадки, то я выскажу свою: в банке все же оперируют целыми числами, просто хранятся данные в минимально возможной валютной еденице (для долларов — это 1 цент, для рублей — 1 копейка).

          Все таки операции с целыми числами более точны и надежны нежели любые операции с числами с плавающей точкой (даже какой бы повышенной точности она не была). имхо
          • Никто не говорил про числа с плавающей точкой.
            Десятичные повышенной точности — с фиксированной точкой, например, 4 знака после запятой.
            • Такие, как курс ЦБ, к примеру — 4 знака.
            • Теперь понятно. Секнс.
        • А чем же fixed-point отличается от целых?
          Тем, что точку перенесли с нулевого места на второе? :-)
          • Всё дело в системе счисления — софт работающий с деньгами, работает с десятичной системой, а не с двоичной.
            Это касается особенностей работы с числами < 1 и округлений.
            Соответственно используются различные варианты BCD записи.
            • Округления в целочисленной арифметике… ЩИТО?
              • Где тут целочисленная? Если с вас списываются / начисляются проценты, вас счёт получатся далеко не целочисленным. А на аккумуляции ошибок округления было проведено немало афёр в своё время.
                • Набор операций с числами с фиксированной точкой эквивалентен набору операций с целыми числами, разве нет?

                  Грубо говоря, 123.45 руб. ­— это 12345 коп.

                  Я думал, начисление процентов происходит с точностью до копеек по правилам арифметического округления (и, afair, так в договоре даже было написано). Зачем для арифметического округления нужна десятичная запись, мне не ясно. Можете пояснить чуть подробнее?
                  • В договоре с кем? Со всеми банками и финансовой системой вцелом? )
                    • В том самом подписанном мной договоре, где оговаривалось начисление процентов на счёт. :-)
              • 16 округлить до десятков — будет 20
      • Мнимыми :)
        • Комплексными: действительная часть — белая, мнимая — чёрная :)
    • Как раз целыми числами или строками.
      Строки показывают себя лучше если надо провести транзакцию на сто триллионов зимбабвийских тугриков.
      • Для этого bcd придуман уже давно )
    • Однако мой банк например обменивается с процессинговым центром обычными форматированными текстовыми файлами с транзакциями по картам в которых между прочим есть и пробелы в некоторых местах :)
      • у нас аналогичная кухня
  • Теперь мы все знаем, что у мужика на счету было 0x1250 = 4688 долларов.
    • нет, эту сумму должны были списать
    • тогда уж 4688 центов=)
      • $46.88 за пачку сигарет?
        • Скорее, hex12 hex50 = 18 88

          $18.88 — у них может столько курево стоить?
          • 3-4 пачки. Хотя, сильно зависит от штата, может быть и дешевле.
          • За одну пачку дороговато, за 2-3-4 — вполне. Не знаю, как в Штатах, но в Канаде какие-нибудь Dunhill или Parliament вполне могут стоить до $10.
          • Только если экспортный вариант примы
    • раскрыть комментарий
      • это не умножение, а форма записи шестнадцатеричных чисел
        • простите, глупо получилось
  • >Если перевести его в шестнадцатеричную систему, то мы получим
    А если разбить его как 23 — 1 + 488 + 55 + 3 + 0 + 8 + 1 + 84 + 5 + 0000, то получим 666!
    • о ужас. 11 сентября где-то рядом. Майя об этом знали.
  • казалось бы, при чем тут с/с++?
    таблица ASCII одна для всех
    • Думаю, при том, что C/C++ позволяют из const char* получить long* без каких-либо затруднений, простым кастингом к нужному типу, и «строка превращается… превращается… превращается строка… в стопицот квадриллионов!»
  • Сумма денег на карточке не хранится.
  • Вот мне вообще интересно как такое могло произойти?
    Ведь по сути даже если произошла какая-то ошибка на каком-то терминале, то система не могла позволить списать настолько огромную сумму (я думаю овердрафт на такие циферки не дают :)
    Следовательно ошибка в самой платежной системе!

    А от этого становится грустно — сам являюсь владельцем карт Visa и такие новости, честно говоря, неприятны :(
  • А мне кажется это номер карточки. 16 знаков + CIV. (:
  • Интересно, что любое добавление нулей после центов приводит к регулярной структуре «большой» части суммы, и в остатке остаются всё те же 46,88 $.
    • интересно что ты находишь это интересным (с)

      Шэлдон?
  • Побежал проверять остаток своей карточки…
  • Похоже на заговор…
  • только я один прочитал как «Подробности о 17-значном глюке Vista?:)
    • Тоже прочел так, искал подвох от микрософта.
    • я уже несколько раз читаю прямой эфир и каждый раз вижу Vist'у. Первое что подумал, кстати, пофиксили ли баг в 7'ке/

  • Вот как минус такой то они могут дать… нет бы кому так плюс 23 квадрильона дали, вот бы человек порадовался опустошая все банкоматы…
  • Пробелы вместо нулей?! В рот мне ноги, это же Русский Апач!
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.