python固定数字舍入

python 2 中是否有可以执行此操作的函数?


1234 -> round(1234, 2) = 1200

1234 -> round(1234, 3) = 1230

12.34 -> round(12.34, 3) = 12.3

基本上第二个数字表示数字的精度,后面的所有内容都应该四舍五入。


根据评论我想出了这个:


def round_to_precision(x, precision):

    return int(round(x / float(10 ** precision))) * 10 ** precision

但这仍然是错误的,因为我不知道数字的大小。


MM们
浏览 92回答 2
2回答

阿晨1998

这是一个解决方案(为清楚起见,逐步编写)。import mathnum_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) # 1200round(1234, 3) # 1230round(12.34, 3) # 12.3

繁花如伊

我找到了一个解决方案: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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python