Why is the number in Scientific notation always read as a float
, and how can I convert a string like "1e400" to int
(which is too big for a float
)?
>>>int('1e400') ValueError: invalid literal for int() with base 10: '1e400' >>>int(float('1e400')) OverflowError: cannot convert float infinity to integer
I know I can make a function like:
def strtoint(string): parts = string.split('e') if len(parts) == 1: return int(string) elif len(parts) == 2: if int(parts[1])<0: return int(string) return int(parts[0])*10**int(parts[1]) else: return int(string)
But this is not a Putin way, is there a better way?
source share