String to Number example now goes from number to string as well
FossilOrigin-Name: 053b04070704ba62ee6cbbe8232567cf790f439634e4f74495f60f52ea8e35c4
This commit is contained in:
parent
b1681857c8
commit
305b4dbc42
1 changed files with 23 additions and 0 deletions
|
@ -46,3 +46,26 @@ here is:
|
|||
#0 !Number check-sign [ convert ] s:for-each @Number @Mod * ;
|
||||
}}
|
||||
~~~
|
||||
|
||||
Going the other way, back to a string, follows a similar process.
|
||||
|
||||
- Take a value
|
||||
- Repeat:
|
||||
- Divide by `Base`
|
||||
- Convert result to character and append to a buffer
|
||||
- If remainder is not zero, repeat
|
||||
- If number is negative, append the '-' symbol to the buffer
|
||||
- Reverse the buffer contents to return a string in the correct order
|
||||
|
||||
~~~
|
||||
{{
|
||||
'String d:create #12 allot
|
||||
:check-sign (n-) n:negative? [ $- buffer:add ] if ;
|
||||
: n->digit (n-c) &DIGITS + fetch ;
|
||||
:convert (n-) [ @Base /mod swap n->digit buffer:add dup n:zero? ] until drop ;
|
||||
---reveal---
|
||||
:n:to-string<with-base> (n-s)
|
||||
[ &String buffer:set dup n:abs convert check-sign ] buffer:preserve
|
||||
&String s:reverse ;
|
||||
}}
|
||||
~~~
|
||||
|
|
Loading…
Reference in a new issue