Liste des Groupes | Revenir à cl forth |
On 29-10-2024 10:25, dxf wrote:On 29/10/2024 4:07 am, Hans Bezemer wrote:...>
I have put the complication elsewhere. If we assume we're working in decimal, you don't even need >NUMBER:
>
char 0 negate +constant 0-
>
: /int ( a1 n1 -- a2 n2 n3)
0 >r 1 >r 1- chars over +
begin
over 1- over <
while
dup c@ is-digit
while
dup c@ 0- r> tuck * r> + >r 10 * >r 1-
repeat over - rdrop r> -rot
;
...
So that's how to convert a numeric string from the other end.
Nice! Easier than I imagined it would be.
TORS is the multiplier, 2ORS is the accumulator. Normally, the multiplier is multiplied after each run with BASE @ - but that makes little sense when IS-DIGIT isn't properly adjusted. Would be a nice exercise, though.
Les messages affichés proviennent d'usenet.