python中的偏转百分比

时间:2014-06-06 01:03:42

标签: python python-3.x

我在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更小的行为。

1 个答案:

答案 0 :(得分:1)

我认为这只是一个错字,这里的正确值是

  elif (db < -50.0):
    defr = (db + 60.0) * 0.5 + 2.5     # not +5.0