Paypal 92233720368547800 numarası nereden geliyor? [kapalı]


36

Haberlerde , Paypal hesabı yanlışlıkla 92,233,720,368,547,800 ABD Doları tutarında kredilendirilen bir adam hakkında bir hikaye var .

Bu numara nereden geliyor? Bu sayıya ne tür bir programlama hatası neden olabilir?


5
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum, çünkü yardım merkezinde tanımlanan kapsam dahilindeki kavramsal bir programlama sorunu değil.

Yanıtlar:


58

Uzun bir değerin maksimum değeridir (64 bit işaretli integral tipi).

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

Bu sabitin değeri 9,223,372,036,854,775,807; yani, onaltılık 0x7FFFFFFFFFFFFFFFFF.

Bu, herhangi bir dilde 64-bit işaretli bir integral türü için maksimum değer olacaktır, paypal'ın .NET kullandığını varsaymıyorum, yukarıdaki MSDN bağlantısı sadece açıklayıcıdır.

Hata, sadece bir değerin taşması veya bazı garip bir senaryo için hatalı bir varsayılan kodun taşmasıyla sonuçlanan kötü bir dönüşüm hatası olabilir (ondalık veya kayan nokta vb. kendi mühendisliği / QA ekibi tarafından üretimde saman teli gitti. Bellek sızıntısı / işaretçi hatası, buna neden olan yolların listesi gerçekten sayısız. Tel üzerinden gelen bazı bilgileri seri hale getiren bir ayrıştırma hatası olabilirdi, yanlışlıkla beklenmedik veya yanlış hizalanmış bir integral değeriyle sonuçlanacak çok sayıda yol.


1
daha da garip olan rakam, görünüşe göre en yakın 100 dolara yuvarlanmış olması.
KutuluMike

4
Neden soru ve cevaptaki rakamlar aynı değil?
thursdaysgeek

3
Çünkü tamsayı değeri bir kaç paradır. Yani dolar almak için 2 ^ 63-1'i 100'e bölün. Ve sonra bir sebeple en yakın 100 dolara yuvarlanan bir şey.
Mark Adler

4
@ thursdaysgeek bazı matematik integral taşmalara yol açacak kadar yanlış gitti, olasılıklar kod yanlış işlemine devam ediyor, taşma gerçekleştikten sonra miktarın daha da değişmesine neden olan bazı işlemleri hesaplamaya devam ediyordu. Denklem 2 + 3 * 4 * 8/22 + 400 ^ 2 idi ve ikinci adımda bir taşma meydana gelirse, takip eden işlemler bu yanlış numaraya uygulanmaya devam edecektir.
Jimmy Hoffa,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.