Đã 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?
Đã 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?
Câu trả lời:
Đó 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.