Các câu trả lời khác đã chỉ ra rằng việc trình bày các số thực là một vấn đề hóc búa, để nói rằng ít nhất.
Vì bạn không cung cấp đủ bối cảnh trong câu hỏi của bạn, tôi không thể biết nếu module thập phân có thể hữu ích cho nhu cầu của bạn:
http://docs.python.org/library/decimal.html
Trong số những thứ khác mà bạn có thể xác định một cách rõ ràng chính xác mà bạn muốn lấy (từ tài liệu):
>>> getcontext().prec = 6
>>> Decimal('3.0')
Decimal('3.0')
>>> Decimal('3.1415926535')
Decimal('3.1415926535')
>>> Decimal('3.1415926535') + Decimal('2.7182818285')
Decimal('5.85987')
>>> getcontext().rounding = ROUND_UP
>>> Decimal('3.1415926535') + Decimal('2.7182818285')
Decimal('5.85988')
Ví dụ đơn giản từ lời nhắc của tôi (trăn 2.6):
>>> import decimal
>>> a = decimal.Decimal('10.000000001')
>>> a
Decimal('10.000000001')
>>> print a
10.000000001
>>> b = decimal.Decimal('10.00000000000000000000000000900000002')
>>> print b
10.00000000000000000000000000900000002
>>> print str(b)
10.00000000000000000000000000900000002
>>> len(str(b/decimal.Decimal('3.0')))
29
Có thể điều này có thể hữu ích? số thập phân nằm trong python stdlib kể từ 2.4, với phần bổ sung trong python 2.6.
Hy vọng điều này sẽ giúp, Francesco
nếu x ban đầu là str, tại sao lại truyền? –
-1: Không có ví dụ đầu ra yêu cầu cho các giá trị khác nhau của 'x'. Không có ví dụ, chúng tôi chỉ có thể đoán được vấn đề là gì. –