Hướng dẫn is division in python always float? - là sự phân chia trong python luôn luôn trôi nổi?

Câu trả lời được chấp nhận đã đề cập đến PEP 238. Tôi chỉ muốn thêm một cái nhìn nhanh chóng đằng sau hậu trường cho những người quan tâm đến những gì đang diễn ra mà không cần đọc toàn bộ PEP.

Các nhà khai thác bản đồ Python như +, -, from __future__ import division 0 và from __future__ import division 1 cho các chức năng đặc biệt, như vậy, ví dụ: from __future__ import division 2 tương đương với

a.__add__(b)

Về sự phân chia trong Python 2, theo mặc định chỉ có from __future__ import division 1 ánh xạ tới from __future__ import division 4 và kết quả phụ thuộc vào các loại đầu vào (ví dụ: from __future__ import division 5, from __future__ import division 6).

Python 2.2 đã giới thiệu tính năng from __future__ import division 7 from __future__ import division 8, đã thay đổi ngữ nghĩa phân chia theo cách sau (TL; DR của PEP 238):

  • from __future__ import division 1 Bản đồ đến # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 30 phải "trả lại xấp xỉ hợp lý về kết quả toán học của bộ phận" (trích dẫn từ PEP 238)
  • # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31 Bản đồ thành # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 32, sẽ trả lại kết quả của from __future__ import division 1

Với Python 3.0, những thay đổi của PEP 238 đã trở thành hành vi mặc định và không có phương pháp đặc biệt from __future__ import division 4 nào trong mô hình đối tượng của Python.

Nếu bạn muốn sử dụng cùng một mã trong Python 2 và Python 3

from __future__ import division

và dính vào ngữ nghĩa PEP 238 của from __future__ import division 1 và # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31.

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, from __future__ import division 1 và # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31. 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 from __future__ import division 1 đơ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 # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31 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ử # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31, 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

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

Hàm phân chia trong Python có hai biến thể:

  • Phân chia phao: đưa ra một câu trả lời thập phân.: gives a decimal answer.

  • Phân chia số nguyên: Đưa ra câu trả lời trong các số toàn bộ (kết quả phân chia được làm tròn đến tổng số gần nhất).: gives the answer in whole numbers (the division result is rounded to the nearest whole number).

Phân chia phao ( /)

Hoạt động phân chia float from __future__ import division 1 đượ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 from __future__ import division 6 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.

Giá trị trả về cho toán tử phân chia float luôn thuộc loại from __future__ import division 6, ngay cả khi các toán hạng của toán tử không phải là các biến from __future__ import division 6.

Hành vi này của nhà điều hành phân chia phao bắt đầu với sự ra đời của Python3, như trong Python2, toán tử bộ phận float sẽ trả về giá trị số nguyên nếu cả hai toán hạng là số nguyên.

Ví dụ phân chia float

Ví dụ về mã sau đây cho thấy rằng bất kể loại dữ liệu số nào là biến của bạn, câu trả lời của bạn luôn ở loại from __future__ import division 6 nếu bạn sử dụng toán tử phân chia float.

# initializing two floats

my_float1 = 10.0

my_float2 = 10.0

print ("Result of float division of two floats: ", my_float1/my_float2)

# initializing two integers

my_int1 = 10

my_int2 = 10

print ("Result of float division of two integers: ", my_int1/my_int2)

Phân chia số nguyên (//)

Hoạt động phân chia số nguyên # Two float values >> 7.0 // 2.0 3.0 # A single float value >> 7 // 2.0 3.0 # Two integers >> 7 // 2 31 được sử dụng khi bạn muốn câu trả lời của mình có số lượng. Vì điều rất phổ biến cho kết quả chia hai số nguyên là một giá trị thập phân, trong các số nguyên Python3, phân chia kết quả cho giới hạn dưới được gọi là sàn kết quả.

Giá trị trả về cho toán tử phân chia số nguyên là loại # Two integers >> 7 / 3 2.33 # One floating point value >> 7.0 / 3 2.33 # Two floating point values >> 7.0 / 3.0 2.331 nếu các toán hạng là cả số nguyên. Ngược lại, nó trả về giá trị from __future__ import division 6 nếu một trong các toán hạng là một chiếc phao.

Toán tử phân chia số nguyên đã được giới thiệu trong Python3, vì vậy đối với các hệ thống chạy Python2, người dùng phải nhập mô -đun from __future__ import division 7 để sử dụng nó.

Ví dụ phân chia số nguyên

Ví dụ mã sau đây cho thấy sự phân chia của hai số nguyên để tạo ra kết quả số nguyên.

# initializing two integers

my_int1 = 10

my_int2 = 10

print ("Result of integer division of two integers: ", my_int1//my_int2)

Ví dụ sau đây chứng minh rằng nếu một trong các toán hạng (hoặc cả hai) là from __future__ import division 6, thì câu trả lời cũng là from __future__ import division 6, nhưng được làm tròn đến số toàn bộ giới hạn dưới gần nhất.

# initializing two floats

my_float1 = 4

my_float2 = 3.0

print ("Result of integer division of floats and integers: ", my_float1//my_float2)

# initializing two floats

my_float3 = 4.0

my_float4 = 3

print ("Result of integer division of floats and integers ", my_float3//my_float4)

Lưu ý làm thế nào kết quả là giá trị loại from __future__ import division 6, nhưng giống như đối với phân chia số nguyên thông thường mà chúng ta đã thấy trước đó, kết quả vẫn còn được. Điều này có nghĩa là chỉ phần thương số được giữ từ câu trả lời nổi ban đầu, trong khi mọi thứ đến sau khi số thập phân bị loại bỏ và được biểu thị bằng 0.

Bản quyền © 2022 Giáo dục, Inc. Tất cả quyền được bảo lưu

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

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.

Bộ phận có dẫn đến một chiếc 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.

Chủ đề