มีข่าวในเรื่องเกี่ยวกับผู้ชายคนหนึ่งที่บัญชี Paypal ได้รับเครดิตโดยไม่ตั้งใจกับ $ 92,233,720,368,547,800
หมายเลขนี้มาจากไหน ข้อผิดพลาดในการเขียนโปรแกรมแบบใดที่ทำให้ตัวเลขนี้มีจำนวนมากขึ้น?
มีข่าวในเรื่องเกี่ยวกับผู้ชายคนหนึ่งที่บัญชี Paypal ได้รับเครดิตโดยไม่ตั้งใจกับ $ 92,233,720,368,547,800
หมายเลขนี้มาจากไหน ข้อผิดพลาดในการเขียนโปรแกรมแบบใดที่ทำให้ตัวเลขนี้มีจำนวนมากขึ้น?
คำตอบ:
มันเป็นค่าสูงสุดของ long (ประเภท integral integral ที่ลงนาม 64 บิต)
จากhttp://msdn.microsoft.com/en-us/library/system.int64.maxvalue.aspx
ค่าของค่าคงที่นี้คือ 9,223,372,036,854,775,807; นั่นคือเลขฐานสิบหก 0x7FFFFFFFFFFFFFFF
นี่จะเป็นค่าสูงสุดสำหรับประเภทอินทิกรัลแบบ 64 บิตในภาษาใด ๆ ฉันไม่ได้สมมติว่า paypal ใช้. NET ลิงค์ไปยัง MSDN ด้านบนเป็นเพียงตัวอย่างเท่านั้น
ข้อผิดพลาดน่าจะเป็นข้อผิดพลาดในการแปลงที่ไม่ดี (เช่นจากทศนิยมหรือทศนิยมหรืออื่น ๆ ที่ใช้งานไม่ได้นาน) ทำให้เกิดการล้นของค่าบางอย่างหรือรหัสเริ่มต้นที่ไม่ดีสำหรับสถานการณ์แปลก ๆ บางอย่างหรืออาจเป็นการทดสอบ ในการผลิตโดยวิศวกร / ทีมงานควบคุมคุณภาพของพวกเขาไปหญ้าแห้ง ข้อผิดพลาดการรั่วไหลของตัวชี้ / หน่วยความจำรายการวิธีที่จะทำให้เกิดสิ่งนี้นับไม่ถ้วนจริงๆ อาจเป็นข้อผิดพลาดในการแยกวิเคราะห์หาข้อมูลบางอย่างที่เข้ามาหาพวกเขาข้ามเส้นลวดมากมายหลายวิธีที่จะจบลงโดยไม่ตั้งใจด้วยค่าอินทิกรัลที่ไม่คาดคิดหรือไม่ตรงแนว