A frequent programming question is how to ascertain whether a value is numeric.
This can be solved by using this example function isnumeric()
, which
employs the trick of converting a string value to user input by using the
split()
function:
# isnumeric --- check whether a value is numeric function isnumeric(x, f) { switch (typeof(x)) { case "strnum": case "number": return 1 case "string": return (split(x, f, " ") == 1) && (typeof(f[1]) == "strnum") default: return 0 } }
Please note that leading or trailing white space is disregarded in deciding whether a value is numeric or not, so if it matters to you, you may want to add an additional check for that.
Traditionally, it has been recommended to check for numeric values using the
test ‘x+0 == x’. This function is superior in two ways: it will not
report that unassigned variables contain numeric values; and it recognizes
string values with numeric contents where CONVFMT
does not yield
the original string.
On the other hand, it uses the typeof()
function
(see Getting Type Information), which is specific to gawk
.