【发布时间】:2018-02-01 17:35:08
【问题描述】:
在Python中,应该在什么阶段使用round?举个例子:10 * math.log(x) + 10如果我想把这个四舍五入,我应该使用哪个?
round(10 * math.log(x) + 5)
round(10 * math.log(x)) + 5
10 * round(math.log(x)) + 5
我的猜测是,早期舍入会运行得最快,因为更多的算术运算发生在整数上,看起来它们应该比浮点数更快。如果后来的一些值发生变化,舍入似乎不太可能中断。
答案会和int()一样吗?
【问题讨论】:
-
如果
math.log(x)的结果是0.5,你希望10 * math.log(x)是0还是5? -
为什么速度在这里永远是一个标准?您使用的域很重要。如果你在大楼的第 100 层,你会因为比乘电梯更快而走出窗户吗?至少这里的结果(有点)相同,你在 1 楼 - aDlEiAvDe
-
你的表达不一样。准确性而不是微基准测试应该是您的标准。
-
如果不了解为什么你首先要四舍五入,就不可能回答这个问题。目的是什么?如何使用四舍五入的值? (通常,“何时舍入?”的答案要么是“从不!”,要么是“仅在向用户显示结果时”,在后一种情况下,您希望使用字符串格式,而不是
round内置函数。)