为了账号安全,请及时绑定邮箱和手机立即绑定

python固定数字舍入

python固定数字舍入

MM们 2022-12-20 14:26:44
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


查看完整回答
反对 回复 2022-12-20
?
繁花如伊

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)


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信