在Python 3.5 / ipython 7.3.0中以两个数字为单位的数字值



如何通过其前两个数字在Python中呈现数字值?除了要求的前两个数字外,还应出现一个或多个零作为占位符的数字或等于100的占位符。Mathematica代码看起来像这样:

pf2[val_] := PaddedForm[N@val, 2]
pf2[12.345]
12
pf2@12345
12000

您可以使用format

>>> "{:.2g}".format(12.345)
'12'
>>> "{:.2g}".format(12345)
'1.2e+04'

如果结果应为float,请使用:

>>> float("{:.2g}".format(12.345))
12.0
>>> float("{:.2g}".format(12345))
12000.0

round函数接受负值以允许四舍五入到最近的10、100等。我们可以使用 log10来确定以下几点圆的圆形值:

from math import log10, floor
def significant_digits(num, sig_digits):
  return round(num, -int(floor(log10(abs(num))) - (sig_digits - 1)))

# Trying it out
print(significant_digits(12345, 1))  # 10000
print(significant_digits(12345, 2))  # 12000
print(significant_digits(12345, 3))  # 12300
print(significant_digits(12543, 2))  # 13000
print(significant_digits(1.2567, 2)) # 1.3
print(significant_digits(0.2345, 2)) # 0.23

最新更新