Hướng dẫn negative number division in python - phép chia số âm trong python

Trong ứng dụng của tôi, tôi gặp phải những điều sau đây và rất ngạc nhiên bởi kết quả:

8/-7=-2 [cả hai số nguyên].

Điều đó có nghĩa là gì?

Hỏi ngày 4 tháng 4 năm 2011 lúc 6:25Apr 4, 2011 at 6:25

1

Đối với các giá trị thực tế, tức là

1/10 = 0
1/-10 = -1
0, kết quả là khoảng
1/10 = 0
1/-10 = -1
1.

Kết quả của bạn bằng cách sử dụng phân chia số nguyên đang được làm tròn xuống giá trị âm hơn của

1/10 = 0
1/-10 = -1
2. [Điều này còn được gọi là "phân chia sàn"]

Đây là lý do tại sao bạn sẽ nhận được những câu trả lời hơi bối rối của:

>>> 8/[-7]
-2
>>> 8/7
1

Lưu ý: Đây là "cố định" trong Python 3, trong đó kết quả của

1/10 = 0
1/-10 = -1
3 sẽ là
1/10 = 0
1/-10 = -1
1. Vì vậy, nếu bạn không có lý do để sử dụng Python 2, bạn nên nâng cấp. ;]
This is "fixed" in Python 3, where the result of
1/10 = 0
1/-10 = -1
3 would be
1/10 = 0
1/-10 = -1
1. So if you have no reason to be using Python 2, you should upgrade. ;]

Trong Python 3, nếu bạn vẫn muốn phân chia số nguyên, bạn có thể sử dụng toán tử

1/10 = 0
1/-10 = -1
5. Điều này sẽ cung cấp cho bạn câu trả lời giống như
1/10 = 0
1/-10 = -1
3 trong Python 2.

Đây là đề xuất nâng cao Python về chủ đề: PEP 238 - Thay đổi nhà điều hành bộ phận

Đã trả lời ngày 4 tháng 4 năm 2011 lúc 6:29Apr 4, 2011 at 6:29

Chris Cooperchris CooperChris Cooper

Phim thương hiệu vàng 17K951 Huy hiệu bạc70 Hàng đồng9 gold badges51 silver badges70 bronze badges

10

Python luôn thực hiện "phân chia sàn" cho cả phân chia số âm và phân chia số dương.

Đó là

1/10 = 0
1/-10 = -1

Nhưng đôi khi chúng ta cần 1/-10 là 0

Tôi tìm ra nó có thể được thực hiện bằng cách sử dụng bộ phận float trước sau đó kết quả đúc cho int, ví dụ:

int[float[1]/-10] = 0

Điều đó phù hợp với tôi, không cần nhập bộ phận trong tương lai hoặc nâng cấp lên Python 3

Hy vọng nó có thể giúp bạn ~

Đã trả lời ngày 20 tháng 7 năm 2015 lúc 6:35Jul 20, 2015 at 6:35

ZH.JayZH.JayZH.Jay

2112 Huy hiệu bạc2 Huy hiệu đồng2 silver badges2 bronze badges

Để có Python tự động chuyển đổi bộ phận số nguyên thành Float, bạn có thể sử dụng:

from __future__ import division

Now:

8/-7=-1.1428571428571428

Tính năng này không nằm trong Python & NBSP; 2 tiêu chuẩn để không phá vỡ mã hiện có dựa vào phân chia số nguyên.

Tuy nhiên, đây là hành vi mặc định cho Python & NBSP; 3.

Đã trả lời ngày 4 tháng 4 năm 2011 lúc 6:35Apr 4, 2011 at 6:35

Andrea Zoncaandrea ZoncaAndrea Zonca

8.0759 Huy hiệu vàng40 Huy hiệu bạc68 Huy hiệu Đồng9 gold badges40 silver badges68 bronze badges

Khi cả hai giá trị là số nguyên khi chia Python sử dụng phân chia sàn.

Đã trả lời ngày 4 tháng 4 năm 2011 lúc 6:29Apr 4, 2011 at 6:29

Chris Cooperchris CooperLossy

Phim thương hiệu vàng 17K951 Huy hiệu bạc70 Hàng đồng1 silver badge4 bronze badges

1

Python luôn thực hiện "phân chia sàn" cho cả phân chia số âm và phân chia số dương.

Đó là

Nhưng đôi khi chúng ta cần 1/-10 là 0

Tôi tìm ra nó có thể được thực hiện bằng cách sử dụng bộ phận float trước sau đó kết quả đúc cho int, ví dụ:

Điều đó phù hợp với tôi, không cần nhập bộ phận trong tương lai hoặc nâng cấp lên Python 3Apr 4, 2011 at 6:31

Hy vọng nó có thể giúp bạn ~Rumple Stiltskin

Đã trả lời ngày 20 tháng 7 năm 2015 lúc 6:351 gold badge20 silver badges25 bronze badges

5

Vấn đề19446

Được tạo vào năm 2013-10-30 07:18 bởi Nitin.Kumar, lần cuối đã thay đổi 2022-04-11 14:57 bởi Quản trị viên. Vấn đề giờ đã kết thúc.2013-10-30 07:18 by Nitin.Kumar, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Các tập tinTên tập tinTải lênSự mô tảChỉnh sửa
Integer_division.py Nitin.Kumar, 2013-10-30 07:22, 2013-10-30 07:22 Ví dụ cho thấy vấn đề
Tin nhắn [4] MSG201715 - [Xem]Tác giả: Nitin Kumar [Nitin.Kumar]Ngày: 2013-10-30 07:18 MSG201716 - [Xem]Tác giả: Georg Brandl [Georg.Brandl] **
Ngày: 2013-10-30 07:30
Mathematically python is not giving correct output for integer division for negative number, e.g. :  -7//2= -3 but python is giving output -4.
Hi Nitin,

"a // b" is defined as the floor division operation, same as what "math.floor[a / b]" gives: the largest integer  Hi Nitin,
>
> "a // b" is defined as the floor division operation, same as what
> "math.floor[a / b]" gives: the largest integer 
> -7/2 is -3.5, the largest integer 
> ----------
> nosy: +georg.brandl
> resolution:  -> invalid
> status: open -> closed
>
> _______________________________________
> Python tracker 
> 
> _______________________________________
>
MSG202837 - [Xem]Tác giả: Mark Dickinson [Mark.Dickinson] *
Ngày: 2013-11-14 12:28________số 8 Lịch sửNgày
Người sử dụngHoạt động Lịch sửNgày
messages: + msg202837
Người sử dụngHoạt độngArgs2022-04-11 & NBSP; 14: 57: 52
quản trị viênbộ Lịch sửNgày
Người sử dụngHoạt động Lịch sửNgày

Người sử dụng
messages: + msg201716

Hoạt động

Argsbộ Lịch sửNgày
Người sử dụngbộ Lịch sửNgày
Người sử dụngbộGitHub: 63645

Bạn có thể chia cho số âm trong Python không?

Python định nghĩa sự phân chia số nguyên theo cách mà tiên đề hữu ích giữ ngay cả khi N âm. Ngay cả khi một số người có thể mong đợi rằng các số nguyên nên mượn [-n]/d = -[n/d] từ các số thực, thì tiên đề đó rất hiếm khi hữu ích.. Even if some people might expect that integers should borrow the [-n]/d = -[n/d] from real numbers, that axiom is very seldom useful.

Làm thế nào để phân chia số nguyên hoạt động với số âm?

Quy tắc 1: Chỉ số của một số nguyên dương và số nguyên âm là âm. Quy tắc 2: Chỉ số của hai số nguyên dương là tích cực. Quy tắc 3: Chỉ số của hai số nguyên âm là dương. Nếu các dấu hiệu khác nhau, câu trả lời là âm.The quotient of a positive integer and a negative integer is negative. RULE 2: The quotient of two positive integers is positive. RULE 3: The quotient of two negative integers is positive. If the signs are different the answer is negative.

Số âm được thể hiện như thế nào trong Python?

Các số âm được viết với một số hàng đầu thay vì số 0 hàng đầu.Vì vậy, nếu bạn chỉ sử dụng 8 bit cho các số bổ sung twos của mình, thì bạn sẽ xử lý các mẫu từ "00000000" đến "01111111" như toàn bộ số từ 0 đến 127 và dự trữ "1xxxxxxxx" để viết số âm.written with a leading one instead of a leading zero. So if you are using only 8 bits for your twos-complement numbers, then you treat patterns from "00000000" to "01111111" as the whole numbers from 0 to 127, and reserve "1xxxxxxx" for writing negative numbers.

Số âm có thể là số nguyên trong Python không?

Một số nguyên, thường được viết tắt thành int, là một số toàn bộ [dương, âm hoặc bằng không].Vì vậy, 7, 0, -11, 2 và 5 là số nguyên.3.14159, 0,0001, 11.11111 và thậm chí 2.0 không phải là số nguyên, chúng là nổi trong Python.7 , 0 , -11 , 2 , and 5 are integers. 3.14159 , 0.0001 , 11.11111 , and even 2.0 are not integers, they are floats in Python.

Bài Viết Liên Quan

Chủ Đề