Hướng dẫn integer division vs float division python - phân chia số nguyên so với phân chia float python

Trong Python, có hai loại phân chia: phân chia số nguyên và phân chia phao.

Phân chia số nguyên

Bộ phận số nguyên trả lại sàn của bộ phận. Đó là, các giá trị sau điểm thập phân bị loại bỏ. Nó được viết là '//' trong Python 3. Vì vậy, 1 // 3 = 0, 2 // 3 = 0 và 3 // 3 = 1. Các giá trị số nguyên được lưu trữ chính xác, vì vậy chúng an toàn để sử dụng trong so sánh.

Trong Python 2, toán tử '//' không được bao gồm, do đó, nó phải được nhập từ mô -đun __future__. Xem mã bên dưới để biết cách sử dụng toán tử '//' trong Python 2. Toán tử '/' trong Python 2 trả về kết quả số nguyên nếu cả hai toán hạng là số nguyên.

Python 2

# Python 2 integer division using '//'
from __future__ import division
print 4//3  # prints 1

hoặc

# Python 2 integer division using '/'
print 4/3  # prints 1

Python 3

# Python 3 integer division
print(4//3) # prints 1

Phân chia phao

Phân chia float trả về một xấp xỉ điểm nổi của kết quả của một bộ phận. Ví dụ, . Chỉ có một số giá trị nhất định sau khi thập phân có thể được lưu trữ, do đó không thể lưu trữ một biểu diễn nhị phân chính xác của nhiều số điểm nổi. Điều này đôi khi dẫn đến các vấn đề khi so sánh các số hoặc khi làm tròn.. Only a certain number of values after the decimal can be stored, so it is not possible to store an exact binary representation of many floating point numbers. This sometimes leads to problems when comparing numbers or when rounding.

Trong Python 2, toán tử phân chia tiêu chuẩn duy nhất là '/'. Nếu cả hai giá trị là số nguyên, kết quả là một số nguyên. Nếu một trong những giá trị là một chiếc phao, lợi nhuận là một chiếc phao. Mô -đun __future__ có thể được sử dụng để '/' đại diện cho sự phân chia điểm nổi như trong Python 3.

Python 2

from __future__ import division

# floating point division using __future__ syntax
print 4 / 3 # prints 1.33333333333

hoặc

# floating point division using a float to force float result
# no need to import from __future__

print 4 / 3.0 # prints 1.33333333333

Python 3

print(4 / 3) # prints 1.33333333333

Phân chia phao__future__ for documentation of the module.

Phân chia float trả về một xấp xỉ điểm nổi của kết quả của một bộ phận. Ví dụ, . Chỉ có một số giá trị nhất định sau khi thập phân có thể được lưu trữ, do đó không thể lưu trữ một biểu diễn nhị phân chính xác của nhiều số điểm nổi. Điều này đôi khi dẫn đến các vấn đề khi so sánh các số hoặc khi làm tròn.

Trong bài đăng này, bạn sẽ học Python 3 Division, cũng như một số điều kỳ quặc bất ngờ của nó. Bạn sẽ học cách sử dụng cả phương pháp số nguyên và sàn, cũng như cách diễn giải một số kết quả ít được mong đợi của nó.

Phân khu Python - Những cách khác nhau

Python có hai toán tử phân chia khác nhau,

# Python 2 integer division using '/'
print 4/3  # prints 1
1 và
# Python 2 integer division using '/'
print 4/3  # prints 1
2. Cái nào bạn sử dụng phụ thuộc vào kết quả mà bạn muốn đạt được.

  • Toán tử Slash
    # Python 2 integer division using '/'
    print 4/3  # prints 1
    
    1 đơn lẻ được gọi là Phân chia Float, trả về giá trị điểm nổi.floating point value.
  • Mặt khác, người vận hành chém gấp đôi
    # Python 2 integer division using '/'
    print 4/3  # prints 1
    
    2 trả về giá trị nổi, cụ thể là một số nguyên hoặc giá trị điểm nổi.floored integer or floating point value.

Phân chia sàn Python, sử dụng toán tử

# Python 2 integer division using '/'
print 4/3  # prints 1
2, hoạt động bằng cách trả lại giá trị nổi của thương số của nó. Điều này hoạt động khác với phân chia số nguyên sẽ làm tròn số. Thay vào đó, điều này hoạt động bằng cách trả lại giá trị sàn.floor value.

Hãy cùng xem cách thức hoạt động của nó trong hành động, bằng cách xem xét một vài ví dụ:

# Two float values
>> 7.0 // 2.0
3.0

# A single float value
>> 7 // 2.0
3.0

# Two integers
>>  7 // 2
3

Một lưu ý thú vị về điều này là những gì xảy ra với các số âm:

>> -7.0 // 3
-3.0

Về mặt logic, điều này có ý nghĩa. Kết quả sẽ được làm tròn xuống (tức là, đứng), có nghĩa là trong khi chúng ta có thể mong đợi nó bằng

# Python 2 integer division using '/'
print 4/3  # prints 1
6, được làm tròn xuống, giá trị là chính xác
# Python 2 integer division using '/'
print 4/3  # prints 1
7.

Phân chia phao Python

Bộ phận Float Python sử dụng toán tử

# Python 2 integer division using '/'
print 4/3  # prints 1
1 và trả về, tốt, một giá trị điểm nổi. Điều này, có lẽ, nhiều hơn là cách bạn mong đợi sự phân chia sẽ hoạt động. Hãy cùng xem xét một vài ví dụ nữa:

# Two integers
>> 7 / 3
2.33

# One floating point value
>> 7.0 / 3
2.33

# Two floating point values
>> 7.0 / 3.0
2.33

Như bạn có thể thấy, kết quả trả về các giá trị mà bạn mong đợi, bất kể bạn có phân chia số nguyên, phao hay sự pha trộn của cả hai.

Sự kết luận

Chia trong Python cung cấp các cách khác nhau để chia số. Có một sự hiểu biết vững chắc về các nhà khai thác này làm cho bạn trở thành một lập trình viên tốt hơn nhiều bằng cách hiểu rõ về những điều cơ bản. Để tìm hiểu thêm về những điều này, hãy xem các tài liệu chính thức.

Kiểm tra một số hướng dẫn Python khác ở đây.

Để tìm hiểu thêm về các chủ đề liên quan, hãy xem các hướng dẫn dưới đây:

  • Pandas Mô tả: Thống kê mô tả về DataFrame của bạn
  • Sử dụng gấu trúc cho số liệu thống kê mô tả trong Python
  • Tạo các lô cặp trong Seaborn với cặp SNS

Làm thế nào để bạn thực hiện phân chia số nguyên và phân chia float trong Python?

Trong Python 2, toán tử phân chia tiêu chuẩn duy nhất là '/'. Nếu cả hai giá trị là số nguyên, kết quả là một số nguyên. Nếu một trong hai giá trị là một chiếc phao, return là một float. Mô -đun __future__ có thể được sử dụng để '/' đại diện cho sự phân chia điểm nổi như trong Python 3.If both values are integers, the result is an integer. If either of the values is a float, the return is a float. The __future__ module can be used so that '/' represents floating point division as it does in Python 3.

Sự khác biệt giữa phân chia và phân chia phao là gì?

/ vs // - Phân khu VS Sân bộ phân chia toàn bộ sự phân chia thường xuyên luôn là một chiếc phao, trong khi nếu một trong các toán hạng là một chiếc phao trong phân chia sàn, thì đầu ra sẽ là một chiếc phao.The result of regular division is always a float, whereas if one of the operands is a float in floor division, then the output will be a float.

Python có làm phân chia số nguyên không?

Trong Python 3. X, toán tử Slash ("/") thực hiện phân chia thực sự cho tất cả các loại bao gồm các số nguyên, và do đó, ví dụ:3/2 == 1.5.Kết quả là loại điểm nổi ngay cả khi cả hai đầu vào đều là số nguyên: 4/2 mang lại 2.0.

Là bộ phận số nguyên nhanh hơn python?

Về lý do tại sao phân chia sàn Python Int không có Numpy mất nhiều thời gian hơn so với sự phân chia thực sự, đó là một lý do tương tự, nhưng có một vài yếu tố phức tạp: (Giúp Int / Int, Hurts Int // Int) Các vấn đề về chi phí phần cứng tương tự từ Numpy áp dụng;IDIV chậm hơn FDIV.non- numpy Python int floor division takes longer than true division, it's a similar reason, but there are a few complicating factors: (Helps int / int , hurts int // int ) The same hardware instruction overhead issues from numpy apply; IDIV is slower than FDIV .