繁体   English   中英

python中的两位有效数字如何取整?

[英]How to round down two significant figures in python?

我已经看到了周围的解决方案,但它们大多四舍五入到两位有效数字而不是向下

我试过这几种方法

import math
v = 0.000129
math.floor(v*100)/100

-output-
0.0    

或者

v = 0.000129
from decimal import Decimal
float(f"{Decimal(f'{v:.2g}'):f}")

-output-
0.00013

如您所见,我想要两个有效数字,但不希望它们四舍五入。 Decimal 可以给出两个 sig figs,但它四舍五入,而 math 只是简单地给了我 0。

即一些测试

1999 -> 1900
29901 - > 29000
0.0199 -> 0.019

谢谢!

不使用任何字符串转换的数学解决方案:

def round_down(n, sig_figs):
    import math
    return n - n % 10 ** math.ceil(math.log(abs(n), 10) - sig_figs)


>>> [round_down(n, 2) for n in [1990, 29901, 0.0199]]
[1900, 29000, 0.019]

注意事项:

  • 不适用于输入0
  • 负数实际上是朝负方向舍入,而不是朝零舍入(例如-0.0199-0.02

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM