在Python中显示带有两位小数的浮点数


Answers:


148

您可以为此使用字符串格式运算符:

>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 5.0
'5.00'

运算符的结果是一个字符串,因此您可以将其存储在变量中,进行打印等。


273

由于这篇文章可能会在这里出现一段时间,因此我们还要指出python 3语法:

"{:.2f}".format(5)

9
仅出于完整性考虑,如果小数是可变的,例如d=3,则语法为"{:.{}f}".format(5, d)
jurajb

73

f字符串格式:

这是Python 3.6中的新功能-照常将字符串放在引号中,并f'...以与r'...原始字符串相同的方式加上前缀。然后,将任何要放入字符串,变量,数字,大括号内的内容放入其中-Python会f'some string text with a {variable} or {number} within that text'像以前的字符串格式化方法那样进行求值,只是该方法更具可读性。

>>> 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!

您可以在此示例中看到,我们以与以前的字符串格式化方法相似的方式用小数位格式化。

NB a可以是数字,变量甚至是表达式,例如f'{3*my_func(3.14):02f}'

展望未来,使用新代码,我更喜欢f字符串而不是常见的%s或str.format()方法,因为f字符串可以更容易阅读,并且通常更快


6

字符串格式:

print "%.2f" % 5

1
但是所有这些都是字符串,因此iam无法对其执行任何数学运算
itaruns 2014年

@itsaruns如果只需要对它们执行数学运算,则添加空的小数位没有什么区别。您可能正在寻找math.floormath.ceilround
SteenSchütt2014年


4

字符串格式:

a = 6.789809823
print('%.2f' %a)

要么

print ("{0:.2f}".format(a)) 

舍入函数可以使用:

print(round(a, 2))

round()的好处是,我们可以将结果存储到另一个变量中,然后将其用于其他目的。

b = round(a, 2)
print(b)

5
为投票round。它不应仅用于显示目的。
维姆

@wim,我尊重您的评论,但这只是为了满足某人的要求。
debaonline4u

2
@ debaonline4u wim是正确的。round(5.0001, 2)-> 5.0,不是'5.00'
wjandrea


3

如果您实际上想更改数字本身,而不是只显示不同的数字,请使用format()

将其格式化为2位小数:

format(value, '.2f')

例:

>>> format(5.00000, '.2f')
'5.00'

0

我知道这是一个古老的问题,但我一直在努力寻找答案。这是我想出的:

Python 3:

>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict) 
0.12_0.13

3
嗨,欢迎来到Stack Overflow。当回答已经有很多答案的问题时,请确保对您提供的回答为何具有实质性,而不是仅仅呼应原始张贴者已经审查过的内容,增加一些其他见解。在“仅代码”答案(例如您提供的答案)中,这一点尤其重要。
CHB


-1

如果要在调用输入时获得一个小数点后两位数限制的浮点值,

看看这个〜

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.00OP想要的东西。
wjandrea

这对于nan和也无效inf
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.