In den Nachrichten gab es eine Geschichte über einen Mann, dessen Paypal-Konto versehentlich mit 92.233.720.368.547.800 US-Dollar belastet wurde.
Woher kommt diese Nummer? Welche Art von Programmierfehler wird wahrscheinlich zu dieser Zahl führen?
In den Nachrichten gab es eine Geschichte über einen Mann, dessen Paypal-Konto versehentlich mit 92.233.720.368.547.800 US-Dollar belastet wurde.
Woher kommt diese Nummer? Welche Art von Programmierfehler wird wahrscheinlich zu dieser Zahl führen?
Antworten:
Dies ist der Maximalwert eines Long-Typs (64-Bit-Integraltyp mit Vorzeichen).
von http://msdn.microsoft.com/en-us/library/system.int64.maxvalue.aspx
Der Wert dieser Konstante beträgt 9.223.372.036.854.775.807; das heißt, hexadezimal 0x7FFFFFFFFFFFFFFF.
Dies wäre der Maximalwert für einen 64-Bit-Typ mit Vorzeichen in einer beliebigen Sprache. Ich gehe nicht davon aus, dass Paypal .NET verwendet. Der Link zu MSDN oben ist nur veranschaulichend.
Der Fehler ist wahrscheinlich nur ein schwacher Konvertierungsfehler (wie von Dezimal oder Float oder so weiter bis Long, der nicht richtig funktioniert hat), der zu einem Überlauf eines Werts oder zu einem fehlerhaften Standardcode für ein seltsames Szenario führt, oder es könnte ein Test gewesen sein in der Produktion von ihrem Engineering / QA-Team Heudraht gegangen. Memory Leak / Pointer Error, die Liste der Ursachen ist wirklich unzählig. Es könnte ein Parsing-Fehler beim Deserialisieren einiger Informationen gewesen sein, die über das Kabel eingegangen sind, und es gab enorm viele Möglichkeiten, versehentlich einen unerwarteten oder falsch ausgerichteten Integralwert zu erhalten.