Hướng dẫn how do i print a large integer in python? - làm cách nào để in một số nguyên lớn trong python?

Nếu bạn muốn một số nguyên, bạn phải sử dụng bộ phận số nguyên,

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
8 thay vì
In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
9, như đã đề cập trong câu trả lời đã xóa của @Farsil.

result = 1
k = 18
n = 100

for i in range(k):
    result = result * (n - i) // (i + 1)

print(result)

Điều này chỉ cho kết quả chính xác nếu

>>> print(0.1)
0.1
0 luôn là một ước số của
>>> print(0.1)
0.1
1. Tuy nhiên, điều này luôn luôn đúng, vì vậy chúng tôi vẫn ổn.

Bạn không thể sử dụng

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
9 vì điều đó sẽ thực hiện phân chia điểm nổi, sẽ cắt giảm kết quả thành 56 bit. Kết quả chính xác không phù hợp với 56 bit:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172

Tại sao phân chia sàn là an toàn?

Trong trường hợp này, khi sự phân chia cho 2 được thực hiện, chúng tôi đã nhân

>>> print(0.1)
0.1
3 với n và n-1, ít nhất một trong số đó là bội số của 2. Khi i+1 là 3, thì chúng tôi đã nhân với n, n- 1 và N-2, ít nhất một trong số đó là bội số của 3. Mẫu này hoạt động cho tất cả các số.

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu các phương pháp khác nhau để in một số lượng lớn bằng Python. Và sự tương phản giữa in số nguyên hoặc phao trong các tình huống đó. & Nbsp; & nbsp;print a large number in Python. And the contrast between printing integers or floats in those situations.  

Khi bạn trải qua bài viết, vui lòng xem video giải thích của tôi:

Làm thế nào để in tất cả các chữ số của một số lượng lớn trong Python?

Xây dựng vấn đề: Float vs Integer in

Python theo mặc định in một xấp xỉ trong trường hợp số float. Hầu hết mọi người không cần nhiều độ chính xác như vậy. Điều này là để giữ cho số lượng các chữ số có thể quản lý được bằng cách hiển thị giá trị tròn thay thế: thay vào đó:

>>> print(0.1)
0.1

Nếu các số weren làm tròn thì đây sẽ là kết quả:

0.1000000000000000055511151231257827021181583404541015625

Nếu bạn cố gắng in số float lớn, đây sẽ là kết quả bằng cách sử dụng hàm

>>> print(0.1)
0.1
4:

>>> print(0.1000000000000000055511151231257827021181583404541015625)
0.1

Để nói cho bạn sự thật, hầu hết các lập trình viên không làm việc với các ứng dụng kế toán hoặc toán học không bận tâm đến việc in tại sao in các phao lớn hoặc số nguyên là một vấn đề trong Python. Họ chỉ đơn giản là don có nhu cầu.

Giá trị tối đa có thể của một số nguyên trong Python là bao nhiêu?

Trong trường hợp số nguyên, những loại số đó không có bất kỳ loại giới hạn nào đã in số lượng lớn. Chúng có thể có giá trị lớn như bộ nhớ có sẵn.

Thử chạy này:

y = 99999**1000
print(y)

Đầu ra phải là một số nguyên lớn. Và nó không nên có bất kỳ vấn đề nào khi hiển thị kết quả của số mũ này. & Nbsp; & nbsp;

Nếu bạn tăng số mũ, hãy nói lên 10000 giá trị, bạn sẽ nhận được kết quả với một thông báo

>>> print(0.1)
0.1
5, trên vỏ nhàn rỗi. & NBSP;

Nếu bạn nhấp đúp vào tin nhắn, nó sẽ theo dõi bằng một cảnh báo mở rộng nó sẽ làm cho nó chậm hoặc không phản hồi. Đó là bởi vì đầu ra tiêu thụ bộ nhớ PC của bạn. & Nbsp; & nbsp;

Làm thế nào để bạn in số lượng lớn trong Python?

Đã đi, chúng tôi sống với số lượng nổi lớn, đó là vấn đề bắt đầu phát sinh. Thí dụ:

x=9.9999**1000
print(x)

Output:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    x=9.9999**1000
OverflowError: (34, 'Result too large')

Hàm

>>> print(0.1)
0.1
4 có thể hiển thị trên màn hình kết quả vì câu trả lời quá lớn.

Thực tế là phao Python không có kích thước không giới hạn và không có độ chính xác tùy ý theo mặc định, có nghĩa là: Có giới hạn kích thước dựa trên hệ thống mà nó đang chạy (phổ biến nhất là 32 hoặc 64 bit). Hạn chế đó không áp dụng cho số nguyên hoặc chuỗi.

Để biết thêm về các hạn chế kỹ thuật của ngôn ngữ lập trình Python, hãy đọc số học dấu phẩy động: Các vấn đề và giới hạn.

Giả sử những con số bạn đang làm việc lớn, nhưng không đủ lớn để tạo ra lỗi tràn. In kết quả nên dễ dàng? Đúng?

>>> x=9.9999**100
>>> print(x)

Output:

9.990004948383415e+99

Vâng, nó in một bản tóm tắt vì số vẫn còn quá cao. Các giới hạn tiêu chuẩn hàm

>>> print(0.1)
0.1
4 có thể được phá vỡ bằng các phương pháp sau:

Phương pháp 1: Chuyển đổi phao sang số nguyên

Python hiển thị một giá trị tròn để giữ cho số chữ số có thể quản lý được. Nó cho thấy nổi lên đến 16 chữ số của độ chính xác. & NBSP;

Một phương pháp để có được tất cả các số là chuyển đổi kết quả từ phao sang số nguyên bằng hàm

>>> print(0.1)
0.1
8. & Nbsp; & nbsp;

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
0

Output:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
1

Trên các phiên bản cũ của Python, hàm

>>> print(0.1)
0.1
9 có thể được sử dụng để có kết quả giống hệt nhau. Kiểm tra PEP 237 để biết thêm thông tin.

Phương pháp 2: Mô -đun thập phân

Trong các trường hợp như các ứng dụng kế toán và chính xác cao, các công việc cần in biểu diễn thập phân chính xác là cần thiết, hãy sử dụng mô-đun thập phân.

Sử dụng ví dụ trước:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
2

Output:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
3

Mô -đun này được thiết kế để hoạt động theo cách tương tự như số học được dạy ở trường. Nó cung cấp hỗ trợ cho số học dấu phẩy động thập phân chính xác nhanh, thậm chí đối với số lượng lớn.

Phương pháp 3: Phân số

Một cách khác để in các số phao lớn được hỗ trợ bởi mô -đun phân số thực hiện số học dựa trên các số hợp lý (do đó các số như 1/10 có thể được biểu diễn chính xác).

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
4

Output:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
5

Ngoài ra, Python có một phương pháp cung cấp giá trị chính xác của float, dưới dạng một phần: ____ 30. & nbsp;

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
6

Output:

In [1]: int(float(30664510802988208300))
Out[1]: 30664510802988208128
#                        ^^^ oops... off by 172
5

Bản tóm tắt

Trong hướng dẫn này, chúng tôi đã học ba cách khác nhau để in số lượng lớn:

  • Chuyển đổi phao sang số nguyên
  • Mô -đun thập phân
  • Phân số

Chúng tôi hy vọng bài viết ngắn gọn này giúp bạn hiểu rõ hơn các cách in số nguyên lớn và các số nổi và giới hạn của từng số. & NBSP;

Làm cách nào để in một số lượng lớn trong Python?

Hàm Max () in phần tử lớn nhất trong danh sách.max() function prints the largest element in the list.

Làm thế nào để bạn sử dụng một int lớn trong python?

Khoa học dữ liệu thực tế sử dụng Python Python hỗ trợ loại số nguyên "Bignum" có thể hoạt động với số lượng lớn tùy ý.Trong Python 2.5+, loại này được gọi là dài và tách biệt với loại INT, nhưng trình thông dịch sẽ tự động sử dụng bất kỳ nào phù hợp hơn.Python supports a "bignum" integer type which can work with arbitrarily large numbers. In Python 2.5+, this type is called long and is separate from the int type, but the interpreter will automatically use whichever is more appropriate.

Làm thế nào để bạn trả lại một số nguyên dài trong Python?

Loại int (x) để chuyển đổi x thành số nguyên đơn giản.Nhập dài (x) để chuyển đổi x thành số nguyên dài.Type long(x) to convert x to a long integer.

Làm thế nào lớn các số nguyên có thể có được trong Python?

Chúng đại diện cho các số trong phạm vi -2147483648 đến 2147483647. (Phạm vi có thể lớn hơn trên các máy có kích thước từ tự nhiên lớn hơn, nhưng không nhỏ hơn.)-2147483648 through 2147483647. (The range may be larger on machines with a larger natural word size, but not smaller.)