我在GtkMeter的源代码中找到了偏转百分比并将其转换为python:
def iec_scale(db):
if (db < -70.0):
defr = 0.0
elif (db < -60.0):
defr = (db + 70.0) * 0.25
elif (db < -50.0):
defr = (db + 60.0) * 0.5 + 5.0
elif (db < -40.0):
defr = (db + 50.0) * 0.75 + 7.5
elif (db < -30.0):
defr = (db + 40.0) * 1.5 + 15.0
elif (db < -20.0):
defr = (db + 30.0) * 2.0 + 30.0
else:
defr = (db + 20.0) * 2.5 + 50.0
return defr
它工作得很完美,除非db = -50.0
我正在查看代码约1小时且无法找到原因。
db的值=&gt;返回值:
db = -50.1 => 9.950000
db = -50.0 => 7.500000
db = -40.1 => 14.925000
db = -40.0 => 15.000000
db = -30.1 => 29.850000
db = -30.0 => 30.000000
请注意,当db = -50.0
出现不同的行为时,而不是db = -50.1
更小的行为。
答案 0 :(得分:1)
我认为这只是一个错字,这里的正确值是
elif (db < -50.0):
defr = (db + 60.0) * 0.5 + 2.5 # not +5.0