在网上找一一些些,总觉得不得劲,所以自己包装了一个:
# 保留几位小数
def retain_decimals(num: float, d: int = 1):
s = '0'
if d > 0:
s += '.'
s += '0' * d
num_1 = Decimal(num).quantize(Decimal(s), rounding=ROUND_HALF_UP)
num_2 = str(Decimal(num).quantize(Decimal(s), rounding=ROUND_HALF_EVEN))
return num_1
# 0 => dbm 转W
# 1 => W 转 dbm
def power_unit(num: float, type: int = 0):
if type == 0:
n = math.pow(10, num / 10) / 1000
return retain_decimals(n, 3)
n = 10 * math.log(num * 1000, 10)
return retain_decimals(n, 3)
运行代码:
# dbm = w
print(power_unit(37, 0))
# w = dbm
print(power_unit(5, 1))
得到结果:
5.012
36.990
拿去不谢。