Tôi có một hàm lấy các đối số float (thường là số nguyên hoặc số thập phân có một chữ số có nghĩa) và tôi cần xuất các giá trị trong một chuỗi có hai chữ số thập phân (5 -> 5,00, 5,5 -> 5,50, v.v.). Làm thế nào tôi có thể làm điều này trong Python?
Tôi có một hàm lấy các đối số float (thường là số nguyên hoặc số thập phân có một chữ số có nghĩa) và tôi cần xuất các giá trị trong một chuỗi có hai chữ số thập phân (5 -> 5,00, 5,5 -> 5,50, v.v.). Làm thế nào tôi có thể làm điều này trong Python?
Câu trả lời:
Vì bài đăng này có thể ở đây một lúc, nên cũng chỉ ra cú pháp python 3:
"{:.2f}".format(5)
định dạng chuỗi f :
Điều này là mới trong Python 3.6 - chuỗi được đặt trong dấu ngoặc kép như bình thường, được thêm vào f'...
giống như cách bạn làm r'...
với chuỗi thô. Sau đó, bạn đặt bất cứ thứ gì bạn muốn đặt vào trong chuỗi, biến, số, bên trong dấu ngoặc nhọn f'some string text with a {variable} or {number} within that text'
- và Python đánh giá như với các phương thức định dạng chuỗi trước đó, ngoại trừ phương thức này dễ đọc hơn nhiều.
>>> a = 3.141592
>>> print(f'My number is {a:.2f} - look at the nice rounding!')
My number is 3.14 - look at the nice rounding!
Bạn có thể thấy trong ví dụ này, chúng tôi định dạng với các vị trí thập phân theo cách tương tự với các phương thức định dạng chuỗi trước đó.
NB a
có thể là một số, biến hoặc thậm chí là một biểu thức, ví dụ f'{3*my_func(3.14):02f}'
.
Đi tiếp, với mã mới, tôi thích các chuỗi f hơn các phương thức% s hoặc str.format () phổ biến vì các chuỗi f có thể dễ đọc hơn nhiều và thường nhanh hơn nhiều .
Định dạng chuỗi:
print "%.2f" % 5
math.floor
, math.ceil
hoặcround
Định dạng chuỗi:
a = 6.789809823
print('%.2f' %a)
HOẶC LÀ
print ("{0:.2f}".format(a))
Chức năng vòng có thể được sử dụng:
print(round(a, 2))
Điểm hay của round () là, chúng ta có thể lưu trữ kết quả này sang một biến khác và sau đó sử dụng nó cho các mục đích khác.
b = round(a, 2)
print(b)
round
. Nó không nên được sử dụng chỉ cho mục đích hiển thị .
round(5.0001, 2)
-> 5.0
, không'5.00'
Cú pháp Python 3 ngắn nhất:
n = 5
print(f'{n:.2f}')
Tôi biết đó là một câu hỏi cũ, nhưng tôi đã loay hoay tự tìm câu trả lời. Đây là những gì tôi đã đưa ra:
Con trăn 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict)
0.12_0.13
Sử dụng cú pháp Python 3:
print('%.2f' % number)
Nếu bạn muốn nhận giá trị dấu phẩy động với hai vị trí thập phân được giới hạn tại thời điểm gọi đầu vào,
Hãy xem cái này ~
a = eval(format(float(input()), '.2f')) # if u feed 3.1415 for 'a'.
print(a) # output 3.14 will be printed.
eval
một chuỗi khi bạn có thể chỉ round
? Dù sao, điều này thậm chí không hoạt động đúng vì nếu bạn nạp vào 5
, bạn nhận được 5.0
thay vì 5.00
như OP muốn.
nan
và inf
.
d=3
, thì cú pháp là"{:.{}f}".format(5, d)