Hướng dẫn why division is float in python? - tại sao phân chia là float trong python?

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
  • Phân chia sàn Python
  • Phân chia phao Python
  • Sự kết luận

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

Phân chia sàn Python

  • Phân chia phao Pythonfloating point value.
  • Sự kết luậnfloored integer or floating point value.

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

>> -7.0 // 3
-3.0
2 và
>> -7.0 // 3
-3.0
3. Cái nào bạn sử dụng phụ thuộc vào kết quả mà bạn muốn đạt được.floor value.

Toán tử Slash

>> -7.0 // 3
-3.0
2 đơn lẻ được gọi là Phân chia Float, trả về giá trị điểm nổi.

# 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 khác, người vận hành chém gấp đôi

>> -7.0 // 3
-3.0
3 trả về giá trị nổi, cụ thể là một số nguyên hoặc giá trị điểm nổi.

>> -7.0 // 3
-3.0

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

>> -7.0 // 3
-3.0
3, 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.

Phân chia phao Python

Sự kết luận

# 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

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

>> -7.0 // 3
-3.0
2 và
>> -7.0 // 3
-3.0
3. Cái nào bạn sử dụng phụ thuộc vào kết quả mà bạn muốn đạt được.

Sự kết luận

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

>> -7.0 // 3
-3.0
2 và
>> -7.0 // 3
-3.0
3. 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

>> -7.0 // 3
-3.0
2 đơn lẻ được gọi là Phân chia Float, trả về giá trị điểm nổi.

Mặt khác, người vận hành chém gấp đôi

>> -7.0 // 3
-3.0
3 trả về giá trị nổi, cụ thể là một số nguyên hoặc giá trị điểm nổi.

  • Phân chia sàn Python, sử dụng toán tử
    >> -7.0 // 3
    -3.0
    3, 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.
  • 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ụ:
  • Một lưu ý thú vị về điều này là những gì xảy ra với các số âm:

Làm thế nào tôi có thể buộc sự phân chia để được thả nổi trong Python?

Tôi có hai giá trị số nguyên A và B, nhưng tôi cần tỷ lệ của chúng ở điểm nổi. Tôi biết rằng A

Làm thế nào tôi có thể buộc C trở thành một số điểm nổi trong Python sau đây?

c = a / b

Những gì thực sự được hỏi ở đây là:

"Làm thế nào để tôi buộc sự phân chia thực sự sao cho

# 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
0 sẽ trả lại một phần?"

Nâng cấp lên Python 3

Trong Python 3, để có được sự phân chia thực sự, bạn chỉ cần làm

# 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
0.

>>> 1/2
0.5

Phân chia sàn, hành vi phân chia cổ điển cho số nguyên, hiện là

# 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
2:

>>> 1//2
0
>>> 1//2.0
0.0

Tuy nhiên, bạn có thể bị mắc kẹt khi sử dụng Python 2 hoặc bạn có thể viết mã phải hoạt động trong cả 2 và 3.

Nếu sử dụng Python 2

Trong Python 2, nó không quá đơn giản. Một số cách để đối phó với bộ phận Python 2 cổ điển là tốt hơn và mạnh mẽ hơn những cách khác.

Khuyến nghị cho Python 2

Bạn có thể nhận được hành vi phân chia Python 3 trong bất kỳ mô -đun nào với nhập khẩu sau ở đầu:

from __future__ import division

sau đó áp dụng phân chia kiểu Python 3 cho toàn bộ mô -đun. Nó cũng hoạt động trong vỏ trăn tại bất kỳ điểm nào. Trong Python 2:

>>> from __future__ import division
>>> 1/2
0.5
>>> 1//2
0
>>> 1//2.0
0.0

Đây thực sự là giải pháp tốt nhất vì nó đảm bảo mã trong mô -đun của bạn tương thích về phía trước với Python 3.

Các tùy chọn khác cho Python 2

Nếu bạn không muốn áp dụng điều này cho toàn bộ mô -đun, bạn sẽ giới hạn trong một vài cách giải quyết. Phổ biến nhất là ép buộc một trong những toán hạng cho một chiếc phao. Một giải pháp mạnh mẽ là

# 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
3. Trong vỏ trăn tươi:

>>> 1/(2 * 1.0)
0.5

Ngoài ra mạnh mẽ là

# 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
4 từ mô -đun
# 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
5
# 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
6, nhưng điều này có thể chậm hơn vì đó là một cuộc gọi chức năng:

>>> from operator import truediv
>>> truediv(1, 2)
0.5

Không được khuyến nghị cho Python 2

Thường thấy là

# 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
7. Điều này sẽ tăng một kiểu mẫu nếu B là một số phức. Vì sự phân chia với các số phức được xác định, tôi không có sự phân chia nào khi vượt qua một số phức cho ước số.

>> -7.0 // 3
-3.0
0

Tôi không có ý nghĩa gì khi cố tình làm cho mã của bạn dễ vỡ hơn.

Bạn cũng có thể chạy Python bằng cờ

# 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
8, nhưng điều này có nhược điểm của việc thực hiện tất cả các mô -đun với hành vi Python 3 mới và một số mô -đun của bạn có thể mong đợi sự phân chia cổ điển, vì vậy tôi không đề xuất điều này ngoại trừ thử nghiệm. Nhưng để chứng minh:

>> -7.0 // 3
-3.0
1

Chia có cho bạn một con trăn nổi không?

Kết quả của sự phân chia luôn là một giá trị nổi, ngay cả khi bộ phận xuất hiện thậm chí., even if the division comes out even.

Phân chia có phải là phao không?

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.. For example, . 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.

Làm thế nào để phân chia hoạt động trong Python?

Trong Python, có hai loại toán tử phân chia: /: chia số bên trái cho số bên phải của nó và trả về giá trị điểm nổi.//: Chia số ở bên trái cho số bên phải của nó, làm tròn câu trả lời và trả về một số toàn bộ.

Làm thế nào để bạn chia các giá trị float?

Trình cắt / toán tử phía trước duy nhất được gọi là Phân chia Float, trả về giá trị điểm nổi.Mặt khác, toán tử chém // gấp đôi trả về giá trị nổi, cụ thể là một số nguyên hoặc giá trị điểm nổi. is known as float division, which returns a floating point value. On the other hand, the double forward slash // operator returns a floored value, specifically either a floored integer or floating point value.