Tôi đang làm một câu đố, nơi tôi phải đối phó với số thứ tự 10^18. Tuy nhiên, tôi thấy python không thể xử lý số lượng rất lớn trong tất cả các lĩnh vực.Tại sao python không xử lý số lượng rất lớn trong tất cả các lĩnh vực?
Cụ thể, nếu chúng tôi gán một = 1000000000000000000 (10^18) và thực hiện các phép tính số học cơ bản (+, -, /, *), đáp ứng của nó. Tuy nhiên, nó hiển thị OverflowError khi tôi sử dụng nó trong phạm vi()
>>> a = 1000000000000000000
>>> a/2
500000000000000000L
>>> a*2
2000000000000000000L
>>> a+a
2000000000000000000L
>>> a*a
1000000000000000000000000000000000000L
>>> range(a)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
range(a)
OverflowError: range() result has too many items
>>> xrange(a)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
xrange(a)
OverflowError: Python int too large to convert to C long
Tôi đã sử dụng Python 2.7.
- Làm cách nào để xử lý các câu đố như vậy. (Một tài liệu tham khảo hướng dẫn/cuốn sách sẽ được đánh giá)
- Tại sao Python không có khả năng xử lý nó trong phạm vi()/xrange()
Tôi muốn làm điều đó trong python 2.7 sử dụng chức năng inbuild. Không phải là có thể?
Có thể trùng lặp http://stackoverflow.com/questions/1482480/xrange2100-overflowerror-long-int-too-large-to-convert-to-int –
Tôi nghi ngờ bạn sẽ giải quyết câu đố của mình đúng cách . Đếm đến 10^18 với python trên một máy tính của ngày hôm nay sẽ mất một nơi nào đó theo thứ tự 10000 năm. –
itertools.count() có vẻ là một lựa chọn cho nó, nhưng việc đếm là mất nhiều thời gian. Có bất kỳ lựa chọn hiệu quả nào khác không (xem xét các tình huống mà chúng ta cần đếm các giá trị lớn; giải quyết các câu đố) – Surya