2017-07-18 45 views
0

我要舍这样42949672 - > 42949700,2147483647 - > 2147480000,4252017622 - > 4252020000等回合显著数字在python

我尝试使用以下,但只适用于第一个。我怎样才能做出更一般的?谢谢

round(42949672, -2) 
+0

'轮(2147483647,-4)'根据需要给'2147480000'。你需要告诉它有多少个数字来回合。 –

+0

是的,但一轮(42949672,-4)不给42949700.我想我需要自己的数位数学 – golu

回答

1

我假设你要舍入到6显著人物。如果你想圆int S,你可以使用

def round_sf(number, significant): 
    return round(number, significant - len(str(number))) 

print(round_sf(4252017622, 6)) 

结果:

4252020000 
+0

是的,这是有效的。谢谢! – golu

0

要四舍五入到您所定位的任何数字,您可以简单地将数字作为负数,然后将其转换为整数。

digits = 4 
num = 2147483647 
rounded_num = int(round(num, -digits)) 

如果你想保持6个显著数字始终,这就是我在你的问题看到了模式,你会想这样做:

def sf_round(num, sig_fig): 
    return int(round(num, -(len(str(num))-sig_fig)))