有人可以解释一下Python中的 round()和 float()有什么区别吗?
x = 9.09128239
x = float("{0:.2f}".format(x))
y = 9.09128239
y = round(y, 2)
如我所见,上面代码中的两个函数都完成相同的工作。但是, round()似乎更紧凑并且对我有吸引力。
我想知道这些功能后面是否还有其他功能,以及在选择使用哪个功能时是否应该特别考虑一下。
谢谢您的帮助!
答案 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
舍入一个浮点数。