Số 92233720368547800 của paypal đến từ đâu? [đóng cửa]


36

Đã có một câu chuyện trong tin tức về một người đàn ông có tài khoản Paypal đã vô tình được ghi có $ 92,233,720,368,547.800.

Con số này đến từ đâu? Loại lỗi lập trình nào có khả năng làm phát sinh con số này?


5
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì đây không phải là vấn đề lập trình khái niệm trong phạm vi được xác định trong trung tâm trợ giúp.

Câu trả lời:


58

Đó là giá trị tối đa của một loại tích phân dài (64 bit được ký).

từ http://msdn.microsoft.com/en-us/l Library / system.int64.maxvalue.aspx

Giá trị của hằng số này là 9.223.372.036.854.775.807; đó là, thập lục phân 0x7FFFFFFFFFFFFFFF.

Đây sẽ là giá trị tối đa cho loại tích phân có chữ ký 64 bit trong bất kỳ ngôn ngữ nào, tôi không giả sử paypal sử dụng .NET, liên kết đến MSDN ở trên chỉ mang tính minh họa.

Lỗi có thể chỉ là lỗi chuyển đổi kém (như từ thập phân hoặc trôi nổi hoặc lâu đến khi không hoạt động chính xác) dẫn đến một số tràn giá trị hoặc mã mặc định xấu cho một số trường hợp lạ hoặc có thể là một thử nghiệm trong sản xuất bởi đội ngũ kỹ thuật / QA của họ đi hay dây. Lỗi rò rỉ bộ nhớ / con trỏ, danh sách các cách gây ra điều này thực sự là vô số. Có thể là một lỗi phân tích cú pháp khử lưu lượng hóa một số thông tin đến với họ, rất nhiều cách để vô tình kết thúc với một giá trị tích phân không mong muốn hoặc bị phân bổ sai.


1
kỳ lạ hơn nữa là con số rõ ràng đã được làm tròn lên tới 100 đô la gần nhất.
KutuluMike

4
Tại sao các số trong câu hỏi và câu trả lời không giống nhau?
Thứ năm

3
Bởi vì giá trị nguyên là một số xu. Vì vậy, bạn chia 2 ^ 63-1 cho 100 để nhận đô la. Và sau đó một cái gì đó làm tròn đến $ 100 gần nhất vì một số lý do.
Đánh dấu Adler

4
@thursdaygeek một số toán học đã sai đến mức gây ra lỗi tràn tích phân, rất có thể trong quá trình mã bị sai, nó tiếp tục tính toán một số thao tác sau khi tràn xảy ra khiến số tiền thay đổi nhiều hơn. Như thể phương trình là 2 + 3 * 4 * 8/22 + 400 ^ 2 và ở bước thứ hai xảy ra tràn, các thao tác folowing sẽ tiếp tục áp dụng cho số không chính xác đó.
Jimmy Hoffa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.