我有一个函数接受浮点数参数(通常是只有一位有效数字的整数或小数),我需要将值输出为带有两位小数的字符串(5→5.00,5.5→5.50等)。在Python中我该如何做?
我有一个函数接受浮点数参数(通常是只有一位有效数字的整数或小数),我需要将值输出为带有两位小数的字符串(5→5.00,5.5→5.50等)。在Python中我该如何做?
由于这篇文章可能要存在一段时间,让我们也指出Python 3语法:
"{:.2f}".format(5)
>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 5.0
'5.00'
这个操作符的结果是一个字符串,因此您可以将其存储在一个变量中,打印等。
float('%.2f' % 5.0)
? - alperfloat
,你可以跳过中间的字符串,直接使用round(myfloat, 2)
;float('%.2f' % 5.0)
是完全没有意义的(字符串添加了一个零,然后解析回float
会丢弃它(因为float
没有额外的尾随零的概念)。 - ShadowRangerf-string格式化:
这是Python 3.6中的新功能 - 字符串用引号括起来,像普通字符串一样,在前面添加f'...
,与原始字符串r'...
类似。然后,您可以在大括号中放置任何想要放入字符串中的变量、数字等内容:f'某个字符串文本,其中包含{variable}或{number}'
- 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可以更易读,并且通常会更快速。
d=3
,则语法为 f'My number is {foobar:.{d}f}'
- 如 @jurajb 所述。 - starrietf'My number is {foobar:.{d}{format}}'
,其中 format
可以是 e
、f
、g
或 n
。 - toonarmycaptain字符串格式化:
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
” 的意思是对使用“round”函数的投反对票,因为它不应仅用于显示目的。请注意,这里只是翻译内容,不包括解释或其他非翻译部分。 - wimround(5.0001, 2)
-> 5.0
,而不是 '5.00'
。 - wjandrea字符串格式化:
print "%.2f" % 5
math.floor
、math.ceil
或 round
。 - Steen Schütt如果您实际上想要改变数字本身而不仅仅是以不同的方式显示它,可以使用format()方法
将其格式化为2位小数:
format(value, '.2f')
例子:>>> format(5.00000, '.2f')
'5.00'
使用Python字符串格式化。
>>> "%0.2f" % 3
'3.00'
我知道这是一个老问题,但我自己也在苦苦寻找答案。以下是我想到的:
Python 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict)
0.12_0.13
d=3
,则语法为"{:.{}f}".format(5, d)
。 - jurajb