¿De dónde viene el número 92233720368547800 de paypal? [cerrado]

36

Ha habido una historia en las noticias sobre un hombre cuya cuenta de Paypal fue acreditada accidentalmente con $ 92,233,720,368,547,800.

¿De dónde viene este número? ¿Qué tipo de error de programación puede generar este número?

shamp00
fuente
55
Estoy votando para cerrar esta pregunta como fuera de tema porque no es un problema de programación conceptual dentro del alcance definido en el centro de ayuda.

Respuestas:

58

Es el valor máximo de un largo (tipo integral con signo de 64 bits).

de http://msdn.microsoft.com/en-us/library/system.int64.maxvalue.aspx

El valor de esta constante es 9.223.372.036.854.775.807; es decir, hexadecimal 0x7FFFFFFFFFFFFFFF.

Este sería el valor máximo para un tipo integral con signo de 64 bits en cualquier idioma, no estoy suponiendo que PayPal use .NET, el enlace a MSDN anterior es solo ilustrativo.

Es probable que el error sea solo un error de conversión deficiente (como de decimal o flotante o etc. a largo que no funcionó correctamente) resultando en un desbordamiento de un valor, o un código de incumplimiento incorrecto para algún escenario extraño, o podría haber sido una prueba en producción por su equipo de ingeniería / control de calidad que se ha vuelto loco. Error de puntero / pérdida de memoria, la lista de formas de causar esto es realmente innumerable. Podría haber sido un error de análisis deserializando cierta información que les llegó a través del cable, tremendamente numerosas formas de terminar accidentalmente con un valor integral inesperado o desalineado.

Jimmy Hoffa
fuente
1
aún más extraño es que el número aparentemente se redondeó a los $ 100 dólares más cercanos.
KutuluMike
44
¿Por qué los números en la pregunta y la respuesta no son los mismos?
Jueves
3
Porque el valor entero es un recuento de centavos. Entonces divides 2 ^ 63-1 por 100 para obtener dólares. Y luego algo redondeado a los $ 100 más cercanos por alguna razón.
Mark Adler
44
@thursdaysgeek algunas matemáticas salieron lo suficientemente mal como para causar un desbordamiento integral, es probable que en el proceso del código se equivoquen las matemáticas, continuó calculando algunas operaciones después de que ocurriera el desbordamiento y la cantidad cambió aún más. Como si la ecuación fuera 2 + 3 * 4 * 8/22 + 400 ^ 2 y en el segundo paso se produce un desbordamiento, las siguientes operaciones continuarán aplicándose a ese número incorrecto.
Jimmy Hoffa