Hướng dẫn convert fraction to decimal python - chuyển đổi phân số thành python thập phân

Tôi muốn chuyển đổi 1/2 trong Python để khi tôi nói in x (trong đó x = 1/2) nó trả về 0,5

Tôi đang tìm cách làm điều này cơ bản nhất mà không cần sử dụng bất kỳ chức năng phân chia, vòng lặp hoặc bản đồ nào

Tôi đã thử float (1/2) nhưng tôi nhận được 0 ... ai đó có thể giải thích cho tôi tại sao và làm thế nào để sửa chữa nó không?

Có thể làm điều này mà không cần sửa đổi biến x = 1/2 không?

Hướng dẫn convert fraction to decimal python - chuyển đổi phân số thành python thập phân

user202729

2.9503 huy hiệu vàng20 Huy hiệu bạc32 Huy hiệu đồng3 gold badges20 silver badges32 bronze badges

Hỏi ngày 30 tháng 1 năm 2011 lúc 7:33Jan 30, 2011 at 7:33

4

Trong Python 3.x, bất kỳ bộ phận nào cũng trả lại một chiếc phao;

>>> 1/2
0.5

Để đạt được điều đó trong Python 2.x, bạn phải buộc chuyển đổi float:

>>> 1.0/2
0.5

Hoặc nhập bộ phận từ "tương lai"

>>> from __future__ import division
>>> 1/2
0.5

Thêm: Không có loại phân số tích hợp, nhưng có một trong thư viện tiêu chuẩn của Python: there is no built-in fraction type, but there is one in Python's standard library:

>>> from fractions import Fraction
>>> a = Fraction(1, 2) #or Fraction('1/2')
>>> a
Fraction(1, 2)
>>> print a
1/2
>>> float(a)
0.5

và như thế...

Hướng dẫn convert fraction to decimal python - chuyển đổi phân số thành python thập phân

Đã trả lời ngày 30 tháng 1 năm 2011 lúc 10:14Jan 30, 2011 at 10:14

Hướng dẫn convert fraction to decimal python - chuyển đổi phân số thành python thập phân

Đối khángAnt

5,0082 Huy hiệu vàng25 Huy hiệu bạc43 Huy hiệu Đồng2 gold badges25 silver badges43 bronze badges

2

Nếu đầu vào là một chuỗi, thì bạn có thể sử dụng phân số trực tiếp trên đầu vào:

from fractions import Fraction

x='1/2'
x=Fraction(x)  #change the type of x from string to Fraction
x=float(x)     #change the type of x from Fraction to float
print x

Đã trả lời ngày 31 tháng 7 năm 2012 lúc 14:50Jul 31, 2012 at 14:50

Brian Mintonbrian MintonBrian Minton

3.1273 huy hiệu vàng35 Huy hiệu bạc41 Huy hiệu đồng3 gold badges35 silver badges41 bronze badges

Có lẽ bạn đang sử dụng Python 2. Bạn có thể "sửa" phân chia bằng cách sử dụng:

from __future__ import division

Khi bắt đầu tập lệnh của bạn (trước bất kỳ nhập khẩu nào khác). Theo mặc định trong Python 2, toán tử / thực hiện phân chia số nguyên khi sử dụng các toán hạng số nguyên, loại bỏ các phần phân số của kết quả.

Điều này đã được thay đổi trong Python 3 để / luôn là phân chia điểm nổi. Nhà điều hành // mới thực hiện bộ phận số nguyên.

Đã trả lời ngày 30 tháng 1 năm 2011 lúc 7:35Jan 30, 2011 at 7:35

Greg Hewgillgreg HewgillGreg Hewgill

916K178 Huy hiệu vàng1133 Huy hiệu bạc1267 Huy hiệu đồng178 gold badges1133 silver badges1267 bronze badges

6

Ngoài ra, bạn có thể buộc phân chia điểm nổi bằng cách chỉ định số thập phân hoặc bằng cách nhân với 1.0. Chẳng hạn (từ bên trong phiên dịch Python):

>>> print 1/2
0
>>> print 1./2
0.5
>>> x = 1/2
>>> print x
0
>>> x = 1./2
>>> print x
0.5
>>> x = 1.0 * 1/2
>>> print x
0.5

Chỉnh sửa: Có vẻ như tôi đã bị đánh vào cú đấm trong thời gian cần gõ phản hồi của tôi :)

Đã trả lời ngày 30 tháng 1 năm 2011 lúc 7:43Jan 30, 2011 at 7:43

Không có số lượng

>>> 1.0/2
0.5
0 ở bất cứ đâu. Python không đại diện cho các số hợp lý với loại tích hợp-chỉ là số nguyên và số điểm nổi. 1 được chia cho 2 - theo quy tắc phân chia số nguyên - dẫn đến 0.
>>> 1.0/2
0.5
1 là 0.

Đã trả lời ngày 30 tháng 1 năm 2011 lúc 10:02Jan 30, 2011 at 10:02

Karl Knechtelkarl KnechtelKarl Knechtel

59.4K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu đồng10 gold badges86 silver badges132 bronze badges

1