# How do I parse a string to a float or int?

`>>> a = "545.2222">>> float(a)545.22220000000004>>> int(float(a))545`

`def num(s): try: return int(s) except ValueError: return float(s)`

## Python method to check if a string is a float:

`def is_float(value): try: float(value) return True except: return False`

A longer and more accurate name for this function could be: `is_convertible_to_float(value)`

## What is, and is not a float in Python may surprise you:

`val is_float(val) Note-------------------- ---------- --------------------------------"" False Blank string"127" True Passed stringTrue True Pure sweet Truth"True" False Vile contemptible lieFalse True So false it becomes true"123.456" True Decimal" -127 " True Spaces trimmed"\t\n12\r\n" True whitespace ignored"NaN" True Not a number"NaNanananaBATMAN" False I am Batman"-iNF" True Negative infinity"123.E4" True Exponential notation".1" True mantissa only"1,234" False Commas gtfou'\x30' True Unicode is fine."NULL" False Null is not special0x3fade True Hexadecimal"6e7777777777777" True Shrunk to infinity"1.797693e+308" True This is max value"infinity" True Same as inf"infinityandBEYOND" False Extra characters wreck it"12.34.56" False Only one dot allowedu'四' False Japanese '4' is not a float."#56" False Pound sign"56%" False Percent of what?"0E0" True Exponential, move dot 0 places0**0 True 0___0 Exponentiation"-5e-5" True Raise to a negative number"+1e1" True Plus is OK with exponent"+1e1^5" False Fancy exponent not interpreted"+1e1.3" False No decimals in exponent"-+1" False Make up your mind"(1)" False Parenthesis is bad`

You think you know what numbers are? You are not so good as you think! Not big surprise.

## Don't use this code on life-critical software!

Catching broad exceptions this way, killing canaries and gobbling the exception creates a tiny chance that a valid float as string will return false. The `float(...)`

line of code can failed for any of a thousand reasons that have nothing to do with the contents of the string. But if you're writing life-critical software in a duck-typing prototype language like Python, then you've got much larger problems.