If fully successful the number (value) is placed onto the stack and flag will be 0. If it fails (for example contains an illegal character) then a partial number will be placed onto the stack for value (the value computed up until the failure) and flag will be >0. Thus, if flag>0 the string failed to parse fully as a number.
A minus sign is permitted for negative numbers.
NUMBER parses numbers from the input stream in the current number base, as determined by BASE . Eg. If BASE =16 then digits 09 and AF are considered legal and will be parsed properly.
A facility also exists called 'quick hex' that allows a number to be entered in base 16, by placing a $ symbol at the beginning of the string. This avoids the need to change BASE to enter a hex number. E.g. instead of HEX FEED DECIMAL you can simply type $FEED . The number will be parsed as a hexadecimal number without the need to change BASE.
The same facility also exists for binary numbers: Simply precede the number with a % symbol. E.g. %1001 = 9 decimal.
The numbers returned are (by default) singles (16 bits). NUMBER can also return a double (32bit (2 stack cells)) value by including a period in the number string. E.g. 100. 1.00 10.0 .100 will all return 100 decimal (assuming BASE =10) as a double, occupying two stack cells. The stack signature when returning a double value is: address length  value_lsb value_msb flag.
The various facilities can be mixed. For example, $F. means 15 as a double.  $ and . can be specified in any order. However, $ or % if required, should be specified before any number digits.  and . can be placed anywhere in the string.
