Hướng dẫn python floor division returns float - phân chia tầng python trả về float

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 cho các chức năng đặc biệt, như vậy, ví dụ:
from __future__ import division
1 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
0 ánh xạ tới
from __future__ import division
3 và kết quả phụ thuộc vào các loại đầu vào (ví dụ:
from __future__ import division
4,
from __future__ import division
5).

Python 2.2 đã giới thiệu tính năng

from __future__ import division
6
from __future__ import division
7, đã thay đổi ngữ nghĩa phân chia theo cách sau (TL; DR của PEP 238):

  • from __future__ import division
    
    0 Bản đồ thành
    from __future__ import division
    
    9 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)
  • Copied!

    result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
    0 Bản đồ đến

    Copied!

    result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
    1, sẽ trả lại kết quả của
    from __future__ import division
    
    0

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 nào nữa

from __future__ import division
3 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à gắn bó với ngữ nghĩa PEP 238 của

from __future__ import division
0 và

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
0.

Trả lại một số nguyên từ Phân chia số nguyên trong Python #

Sử dụng toán tử phân chia sàn

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
0 để trả về một số nguyên từ bộ phận số nguyên, ví dụ:

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
7. Nhà điều hành phân chia sàn sẽ luôn trả về một số nguyên và giống như sử dụng phân chia toán học với hàm

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
8 được áp dụng cho kết quả.

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️

Chúng tôi đã sử dụng nhà điều hành phân chia sàn

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
0 để trả về một số nguyên từ INT Division.

Phân khu

from __future__ import division
0 của các số nguyên mang lại một chiếc phao, trong khi phân chia sàn

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
0 của số nguyên dẫn đến một số nguyên.

Kết quả của việc sử dụng toán tử phân chia sàn là phân chia toán học với hàm

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
8 được áp dụng cho kết quả.

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5

Bạn có thể sử dụng phương pháp

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
3 theo cách tương tự như cách chúng tôi sử dụng toán tử phân chia sàn

Copied!

result_1 = 30 // 6 print(result_1) # 👉️ 5 print(type(result_1)) # 👉️ result_2 = 30 / 6 print(result_2) # 👉️ 5.0 print(type(result_2)) # 👉️
0.

Copied!

import math result_1 = math.floor(11 / 2) print(result_1) # 👉️ 5 result_2 = 11 / 2 print(result_2) # 👉️ 5.5

Phương thức Math.Floor trả về số nguyên lớn nhất hoặc bằng số được cung cấp.

Ngoài ra còn có một phương pháp

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
5.

Copied!

import math result_1 = math.ceil(11 / 2) print(result_1) # 👉️ 6 result_2 = 11 / 2 print(result_2) # 👉️ 5.5

Phương thức Math.ceil trả về số nguyên nhỏ nhất lớn hơn hoặc bằng số được cung cấp.

Bạn cũng có thể sử dụng hàm

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
6 nếu bạn muốn làm tròn đến số nguyên gần nhất khi chia.

Copied!

result_1 = round(15 / 4) print(result_1) # 👉️ 4 result_2 = 15 / 4 print(result_2) # 👉️ 3.75

Hàm vòng lấy 2 tham số sau:

TênSự mô tả

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
7
con số đến vòng đến độ chính xác

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
8 sau thập phân

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
8
Số chữ số sau thập phân, số lượng nên có sau khi hoạt động (tùy chọn)

Hàm

Copied!

import math result_1 = math.floor(11 / 2) print(result_1) # 👉️ 5 result_2 = 11 / 2 print(result_2) # 👉️ 5.5
0 trả về số được làm tròn đến độ chính xác của

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
8 sau điểm thập phân.

Nếu

Copied!

print(11 // 2) # 👉️ 5 print(11 / 2) # 👉️ 5.5
8 bị bỏ qua, hàm trả về số nguyên gần nhất.

Liệu sự phân chia sàn có dẫn đến một chiếc phao?

Toán tử phân chia sàn (//) chủ yếu được sử dụng khi bạn yêu cầu một số nguyên hoặc cần trả về số nguyên nhỏ nhất nhỏ hơn hoặc bằng đầu vào. Nếu các toán hạng là cả hai số nguyên, thì đầu ra sẽ là một số nguyên. Nếu một trong hai toán hạng là một float thì đầu ra sẽ là một float.If either operand is a float then the output will be a float.

Tại sao bộ phận Python trở lại nổi?

Hành vi của toán tử phân chia trong Python 2.7 và Python 3 // không "được sử dụng cho đầu ra số nguyên"..for types coherence.

Việc phân chia trong Python tạo ra một chiếc phao?

Python 3 thay đổi trong Python 3, "/" hoạt động đồng đều như một toán tử phân chia phao.Vì vậy, nó luôn trả về loại float: 10/3 trả về 3.333333 thay vì 3, 6/3 trả về 2.0 thay vì 2."/" uniformly works as a float division operator. So, it always returns the float type: 10/3 returns 3.333333 instead of 3, 6/3 returns 2.0 instead of 2.

Phân chia sàn có trả lại một int không?

Toán tử phân chia sàn sẽ luôn trả về một số nguyên và giống như sử dụng phân chia toán học với hàm slound () được áp dụng cho kết quả. and is like using mathematical division with the floor() function applied to the result.