De onde vem o número 92233720368547800 do paypal? [fechadas]

36

Houve uma notícia nas notícias sobre um homem cuja conta Paypal foi acidentalmente creditada com $ 92.233.720.368.547.800.

De onde vem esse número? Que tipo de erro de programação provavelmente dará origem a esse número?

shamp00
fonte
5
Estou votando para encerrar esta questão como fora de tópico, porque não é um problema de programação conceitual dentro do escopo definido na Central de Ajuda.

Respostas:

58

É o valor máximo de um longo (tipo integral assinado de 64 bits).

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

O valor dessa constante é 9.223.372.036.854.775.807; isto é, hexadecimal 0x7FFFFFFFFFFFFFFF.

Esse seria o valor máximo para um tipo integral assinado de 64 bits em qualquer idioma. Não estou assumindo que o paypal use .NET. O link para o MSDN acima é apenas ilustrativo.

Provavelmente, o erro é apenas um erro de conversão ruim (como decimal, float ou etc, por muito tempo que não funcionou corretamente), resultando em um transbordamento de um valor ou código incorreto por padrão para algum cenário estranho, ou poderia ter sido um teste na produção por sua equipe de engenharia / controle de qualidade, foram perdidos. Vazamento de memória / erro do ponteiro, a lista de maneiras de causar isso é realmente incontável. Pode ter sido um erro de análise desserializar algumas informações que chegaram a eles através da rede, tremendamente inúmeras maneiras de acabar acidentalmente com um valor integral inesperado ou desalinhado.

Jimmy Hoffa
fonte
1
ainda mais estranho é que o número foi aparentemente arredondado para os $ 100 dólares mais próximos.
KutuluMike
4
Por que os números da pergunta e a resposta não são os mesmos?
thursdaysgeek
3
Porque o valor inteiro é uma contagem de centavos. Então, você divide 2 ^ 63-1 por 100 para obter dólares. E então algo arredondado para os US $ 100 mais próximos, por algum motivo.
Mark Adler
4
@thursdaysgeek alguma matemática deu errado o suficiente para causar um estouro integral, é provável que no código o código esteja errado, continuou calculando algumas operações depois que o estouro ocorreu, causando uma alteração ainda maior na quantidade. Como se a equação fosse 2 + 3 * 4 * 8/22 + 400 ^ 2 e na segunda etapa ocorrer um estouro, as operações a seguir continuarão sendo aplicadas a esse número incorreto.
21813 Jimmy Hoffa