Python中round()和float()之间的区别

时间:2018-12-19 21:08:03

标签: python rounding

有人可以解释一下Python中的 round() float()有什么区别吗?

例如

x = 9.09128239
x = float("{0:.2f}".format(x))

y = 9.09128239
y = round(y, 2)

如我所见,上面代码中的两个函数都完成相同的工作。但是, round()似乎更紧凑并且对我有吸引力。

我想知道这些功能后面是否还有其他功能,以及在选择使用哪个功能时是否应该特别考虑一下。

谢谢您的帮助!

4 个答案:

答案 0 :(得分:1)

这会格式化并解析一个字符串,这是很多不必要的工作:

x = float("{0:.2f}".format(x))

这个简单的四舍五入的浮动,并且会更快:

y = round(y, 2)

答案 1 :(得分:0)

float()用于将数据类型转换为float类型(如果适用)。

另一方面, round()用于将给定值四舍五入到指定的小数位数。

仅作简单说明,您在上面的float()示例中所做的就是获取一个数字,将其四舍五入为指定的数字位数(在您的示例中为两位),将其转换为字符串,然后将其强制转换为float数据类型。

有关float()的更多信息,您可以访问以下页面: [Built in Functions](https://docs.python.org/3/library/functions.html#float)

答案 2 :(得分:0)

在这里进行舍入的不是float函数。

总的来说,float和round的作用非常不同。 Float接受有效输入,并尝试将其转换为浮点表示形式。 Round仅舍入到n个有效数字。

float(3) #works on numbers 
float("5.2") #and strings too!

x = 9.09128239
#x = float("{0:.2f}".format(x)) #there are two steps here.

result = "{0:.2f}".format(x)

#result is a string "9.09" The rounding happened because of the precision listed during string formatting.

x = float(result) #just takes the string and converts to float

y = 9.09128239
y = round(y, 2) #directly works on the float and rounds it off.

Tl;博士,请使用回合。

答案 3 :(得分:0)

主要区别之一是 float是一个类,而round是一个函数。使用float不能四舍五入一个数字:

float('0.12345') #0.12345

但是round确实:

round(0.12345, 2) #0.12

使用float将某物转换为浮点数,然后使用round舍入一个浮点数。