python 2 中是否有可以执行此操作的函数?1234 -> round(1234, 2) = 12001234 -> round(1234, 3) = 123012.34 -> round(12.34, 3) = 12.3基本上第二个数字表示数字的精度,后面的所有内容都应该四舍五入。根据评论我想出了这个:def round_to_precision(x, precision): return int(round(x / float(10 ** precision))) * 10 ** precision但这仍然是错误的,因为我不知道数字的大小。
2 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
这是一个解决方案(为清楚起见,逐步编写)。
import math
num_digits = lambda x: int((math.log(x, 10)) + 1)
def round(x, precision):
digits = num_digits(x)
gap = precision - digits
x = x * (10 ** gap)
x = int(x)
x = x / (10 ** gap)
return x
结果:
round(1234, 2) # 1200
round(1234, 3) # 1230
round(12.34, 3) # 12.3
繁花如伊
TA贡献2012条经验 获得超12个赞
我找到了一个解决方案:
def round_to_precision(x, precision):
fmt_string = '{:.' + str(precision) + 'g}'
return float(fmt_string.format(x))
print round_to_precision(1234, 2)
print round_to_precision(1234, 3)
print round_to_precision(12.34, 3)
添加回答
举报
0/150
提交
取消