The clearer option is to use tonumber.
As of 5.3.2, this function will automatically detect (signed) integers, float (if a point is present) and hexadecimal (both integers and floats, if the string starts by "0x" or "0X").
The following snippets are shorter but not equivalent :
a + 0 -- forces the conversion into float, due to how + works.
a | 0 -- (| is the bitwise or) forces the conversion into integer.
-- However, unlike `math.tointeger`, it errors if it fails.