2012-05-26 20 views

Trả lời

63

Trong Python 2, 25/100 bằng 0 khi thực hiện một số nguyên divison. vì kết quả nhỏ hơn 1.

Bạn có thể "khắc phục" điều này bằng cách thêm from __future__ import division vào tập lệnh của mình. Điều này sẽ luôn luôn thực hiện một phân chia nổi khi sử dụng toán tử / và sử dụng // để chia số nguyên.

Một tùy chọn khác sẽ làm cho ít nhất một trong số các toán hạng một phao, ví dụ: 25.0/100.

Trong Python 3, 25/100 luôn là 0.25.

1

25/100 là phép tính số nguyên làm tròn (bằng cách cắt ngắn) thành 0.

+2

Nitpicking nhẹ, không làm tròn quá nhiều như cắt xén. – Levon

+0

@Levon Đó là một hình thức làm tròn, nhưng có. – Marcin

10

Đây là vấn đề về số nguyên cắt ngắn (tức là, bất kỳ phần phân số nào của một số đều bị hủy). Vì vậy:

25/100 cho 0

Tuy nhiên, chừng nào ít nhất một của toán hạng trong bộ phận là một float, bạn sẽ nhận được một kết quả float:

25/100.0 hoặc 25.0/100 hoặc 25.0/100.0 tất cả cung cấp cho 0.25

+0

Làm thế nào để thực hiện điều này trong trường hợp các số được lưu trữ trong một biến? Ví dụ x/y, trong đó x = 4 và y = 3. Hoặc x = someObject.size. – altabq

+4

Một cách để làm điều đó là tp nhân một trong những con số với 1.0. Ví dụ: '1.0 * x/2' hoặc bạn có thể thực hiện' float (x)/2' - có thể có các cách khác, nhưng chúng xuất hiện trong đầu của tôi. Bạn luôn có thể xác minh tương tác kết quả của mình trước khi mã hóa chúng trong một chương trình. Hy vọng rằng sẽ giúp. – Levon

+0

Có, cảm ơn bạn đã trả lời! – altabq

Các vấn đề liên quan