How to fix this python error? OverflowError: cannot convert float infinity to integer

One of the four values valueWI, valueHI, valueWF, valueHF is set to float infinity. Just truncate it to something reasonable, e.g., for a general and totally local solution, change your DrawLine call to:

ALOT = 1e6
vals = [max(min(x, ALOT), -ALOT) for x in (valueWI, valueHI, valueWF, valueHF)]
dc.DrawLine(*vals)

best, of course, would be to understand which of the values is infinity, and why -- and fix that. But, this preferable course is very application-dependent, and entirely depends on the code leading to the computation of those values, which you give us absolutely no clue about, so it's hard for us to offer very specific help about this preferable option!-)


OverflowError: cannot convert float infinity to integer

def round_int(x):
    if x in [float("-inf"),float("inf")]: return float("nan")
    return int(round(x))

# TEST
print(round_int(174.919753086))
print(round_int(0))
print(round_int(float("inf")))
print(round_int(float("-inf")))

175
0
nan
nan

Tags:

Python