Hướng dẫn does division in python create a float? - phân chia trong python có tạo ra float không?

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

>>> 1/2
0.5
2 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

>>> 1/2
0.5
2.

>>> 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à

>>> 1/2
0.5
4:

>>> 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à

>>> 1/2
0.5
5. Trong vỏ trăn tươi:

>>> 1/(2 * 1.0)
0.5

Ngoài ra mạnh mẽ là

>>> 1/2
0.5
6 từ mô -đun
>>> 1/2
0.5
7
>>> 1/2
0.5
8, 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à

>>> 1/2
0.5
9. Đ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ố.

>>> 1 / float(2)
0.5
>>> 1 / float(2j)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't convert complex to float

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ờ

>>> 1//2
0
>>> 1//2.0
0.0
0, 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:

$ python -Qnew -c 'print 1/2'
0.5
$ python -Qnew -c 'print 1/2j'
-0.5j

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

  • Python có hai toán tử phân chia khác nhau,
    >>> 1//2
    0
    >>> 1//2.0
    0.0
    
    1 và
    >>> 1//2
    0
    >>> 1//2.0
    0.0
    
    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.floating point value.
  • Toán tử chém phía trước
    >>> 1//2
    0
    >>> 1//2.0
    0.0
    
    1 được gọi là Phân chia float, trả về giá trị điểm nổi.floored integer or floating point value.

Mặt khác, toán tử chém gấp đôi

>>> 1//2
0
>>> 1//2.0
0.0
2 trả về giá trị không có giá trị, cụ thể là một số nguyên hoặc giá trị điểm nổi.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:

>>> 1/2
0.5
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

>>> 1//2
0
>>> 1//2.0
0.0
6, được làm tròn xuống, giá trị là chính xác
>>> 1//2
0
>>> 1//2.0
0.0
7.

Phân chia phao Python

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

>>> 1//2
0
>>> 1//2.0
0.0
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:

>>> 1/2
0.5
1

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

Tại sao phân chia trong Python là nổi?

Hoạt động phân chia float / được sử dụng khi bạn muốn kết quả phân chia chính xác hơn, vì nó không làm tròn giá trị cho toàn bộ số.Cần lưu ý rằng đối với các giá trị thập phân định kỳ, có giới hạn về số lượng biến một biến nổi có thể lưu trữ, do đó không phải lúc nào cũng có thể lưu trữ giá trị chính xác.when you want a more precise division result, as it does not round off the value to whole numbers. It must be noted that for recurring decimal values, there is a limit to how many digits a float variable can store, so it is not always possible to store the exact value.

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.