ฉันมีฟังก์ชันที่รับอาร์กิวเมนต์แบบลอย (โดยทั่วไปจะเป็นจำนวนเต็มหรือทศนิยมที่มีเลขนัยสำคัญหนึ่งหลัก) และฉันจำเป็นต้องส่งออกค่าในสตริงที่มีทศนิยมสองตำแหน่ง (5 -> 5.00, 5.5 -> 5.50 เป็นต้น) ฉันจะทำสิ่งนี้ใน Python ได้อย่างไร
ฉันมีฟังก์ชันที่รับอาร์กิวเมนต์แบบลอย (โดยทั่วไปจะเป็นจำนวนเต็มหรือทศนิยมที่มีเลขนัยสำคัญหนึ่งหลัก) และฉันจำเป็นต้องส่งออกค่าในสตริงที่มีทศนิยมสองตำแหน่ง (5 -> 5.00, 5.5 -> 5.50 เป็นต้น) ฉันจะทำสิ่งนี้ใน Python ได้อย่างไร
คำตอบ:
คุณสามารถใช้ตัวดำเนินการจัดรูปแบบสตริงสำหรับสิ่งนั้น:
>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 5.0
'5.00'
ผลลัพธ์ของตัวดำเนินการคือสตริงดังนั้นคุณสามารถเก็บไว้ในตัวแปรพิมพ์และอื่น ๆ
เนื่องจากโพสต์นี้อาจอยู่ที่นี่สักพักหนึ่งให้ชี้ให้เห็นไวยากรณ์ของ python 3:
"{:.2f}".format(5)
นี่เป็นสิ่งใหม่ใน Python 3.6 - สตริงจะอยู่ในเครื่องหมายคำพูดตามปกติโดยนำหน้าด้วยf'...
วิธีเดียวกับที่คุณr'...
ทำกับสตริงดิบ จากนั้นคุณวางสิ่งที่คุณต้องการใส่ไว้ในสตริงตัวแปรตัวเลขภายในวงเล็บปีกกาf'some string text with a {variable} or {number} within that text'
- และ Python จะประเมินเช่นเดียวกับวิธีการจัดรูปแบบสตริงก่อนหน้านี้ยกเว้นว่าวิธีนี้อ่านได้ง่ายกว่ามาก
>>> foobar = 3.141592
>>> print(f'My number is {foobar:.2f} - look at the nice rounding!')
My number is 3.14 - look at the nice rounding!
คุณสามารถดูได้ในตัวอย่างนี้เราจัดรูปแบบด้วยตำแหน่งทศนิยมในลักษณะเดียวกับวิธีการจัดรูปแบบสตริงก่อนหน้านี้
NB สามารถเป็นจำนวนตัวแปรหรือแม้กระทั่งเช่นการแสดงออกfoobar
f'{3*my_func(3.14):02f}'
นับจากนี้ไปด้วยรหัสใหม่ฉันชอบ f-strings มากกว่าวิธีการทั่วไป% s หรือ str.format () เนื่องจาก f-strings สามารถอ่านได้ไกลกว่าและมักจะเร็วกว่ามาก
การจัดรูปแบบสตริง:
a = 6.789809823
print('%.2f' %a)
หรือ
print ("{0:.2f}".format(a))
สามารถใช้ฟังก์ชัน Round:
print(round(a, 2))
สิ่งที่ดีเกี่ยวกับ round () คือเราสามารถเก็บผลลัพธ์นี้ไว้ในตัวแปรอื่นแล้วใช้เพื่อวัตถุประสงค์อื่น
b = round(a, 2)
print(b)
round
. ไม่ควรใช้เพื่อการแสดงผลเท่านั้น
round(5.0001, 2)
-> 5.0
ไม่ใช่'5.00'
ใช้การจัดรูปแบบสตริง python
>>> "%0.2f" % 3
'3.00'
ไวยากรณ์ Python 3 ที่สั้นที่สุด:
n = 5
print(f'{n:.2f}')
หากคุณต้องการเปลี่ยนตัวเลขจริงๆแทนที่จะแสดงเพียงอย่างเดียวให้ใช้รูปแบบ ()
จัดรูปแบบเป็นทศนิยม 2 ตำแหน่ง:
format(value, '.2f')
ตัวอย่าง:
>>> format(5.00000, '.2f')
'5.00'
ฉันรู้ว่ามันเป็นคำถามเก่า แต่ฉันก็ดิ้นรนหาคำตอบด้วยตัวเอง นี่คือสิ่งที่ฉันคิดขึ้นมา:
Python 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict)
0.12_0.13
การใช้ไวยากรณ์ Python 3:
print('%.2f' % number)
หากคุณต้องการรับค่าทศนิยมสองตำแหน่งที่ จำกัด ในขณะที่เรียกอินพุต
ลองดูสิ ~
a = eval(format(float(input()), '.2f')) # if u feed 3.1415 for 'a'.
print(a) # output 3.14 will be printed.
eval
เป็นสตริงเมื่อคุณทำได้round
? อย่างไรก็ตามสิ่งนี้ทำงานไม่ถูกต้องเนื่องจากถ้าคุณป้อน5
คุณจะได้รับ5.0
แทนที่จะเป็น5.00
เช่นที่ OP ต้องการ
d=3
ไวยากรณ์คือ"{:.{}f}".format(5, d)