6.14.2 Number Conversion

You get an overview of how the text interpreter converts its numeric input in Literals in source code. This section describes some related words.

By default, the number base used for integer number conversion is given by the contents of the variable base. Note that a lot of confusion can result from unexpected values of base. If you change base anywhere, make sure to save the old value and restore it afterwards; better yet, use base-execute, which does this for you. In general I recommend keeping base decimal, and using the prefixes described in Literals in source code for the popular non-decimal bases.

base-execute ( i*x xt u – j*x  ) gforth-0.7 “base-execute”

execute xt with the content of BASE being u, and restoring the original BASE afterwards.

base ( – a-addr  ) core “base”

User variable – a-addr is the address of a cell that stores the number base used by default for number conversion during input and output. Don’t store to base, use base-execute instead.

hex ( ) core-ext “hex”

Set base to &16 (hexadecimal). Don’t use hex, use base-execute instead.

decimal ( ) core “decimal”

Set base to &10 (decimal). Don’t use decimal, use base-execute instead.

dpl ( – a-addr  ) gforth-0.2 “Decimal-PLace”

User variable – a-addr is the address of a cell that stores the position of the decimal point in the most recent numeric conversion. Initialised to -1. After the conversion of a number containing no decimal point, dpl is -1. After the conversion of 2. it holds 0. After the conversion of 234123.9 it contains 1, and so forth.

Number conversion has a number of traps for the unwary:

You can read numbers into your programs with the words described in Line input and conversion.