У новинах з'явилася історія про людину, на рахунок якої в Paypal випадково було зараховано 92,233,720,368,547,800 доларів.
Звідки ця цифра? Яка помилка програмування може призвести до цього числа?
У новинах з'явилася історія про людину, на рахунок якої в Paypal випадково було зараховано 92,233,720,368,547,800 доларів.
Звідки ця цифра? Яка помилка програмування може призвести до цього числа?
Відповіді:
Це максимальне значення довгого (64-бітного підписаного інтегрального типу).
від http://msdn.microsoft.com/en-us/library/system.int64.maxvalue.aspx
Значення цієї константи становить 9,223,372,036,854,775,807; тобто шістнадцятковий 0x7FFFFFFFFFFFFFFF.
Це було б максимальне значення для 64-бітного підписаного інтегрального типу на будь-якій мові, я не припускаю, що Paypal використовує .NET, посилання на MSDN вище є лише ілюстративним.
Помилка, ймовірно, є лише поганою помилкою конверсії (наприклад, від десяткової чи плаваючої чи т. Д. До довгої, яка не працює належним чином), що призводить до переповнення значення або поганого дефолтного коду за дивним сценарієм, або це могло бути тестом у виробництві їх інженер / QA команда пішла сіно-дріт. Помилка витоку пам’яті / вказівника пам’яті, перелік способів спричинити це справді незліченно. Могла бути помилка розбору, десериалізуючи деяку інформацію, що надходила до них по всій лінії, надзвичайно численні способи випадкового виявлення несподіваного або нерівного цілісного значення.