Next: Complex, Previous: Comparison, Up: Numbers [Contents][Index]

The following procedures read and write numbers according to their
external representation as defined by R5RS (see R5RS Lexical Structure in The Revised^5 Report on the Algorithmic
Language Scheme). See the ```
(ice-9
i18n)
```

module, for locale-dependent number parsing.

- Scheme Procedure:
**number->string***n [radix]* - C Function:
**scm_number_to_string***(n, radix)* Return a string holding the external representation of the number

`n`in the given`radix`. If`n`is inexact, a radix of 10 will be used.

- Scheme Procedure:
**string->number***string [radix]* - C Function:
**scm_string_to_number***(string, radix)* Return a number of the maximally precise representation expressed by the given

`string`.`radix`must be an exact integer, either 2, 8, 10, or 16. If supplied,`radix`is a default radix that may be overridden by an explicit radix prefix in`string`(e.g. "#o177"). If`radix`is not supplied, then the default radix is 10. If string is not a syntactically valid notation for a number, then`string->number`

returns`#f`

.

- C Function:
*SCM***scm_c_locale_stringn_to_number***(const char *string, size_t len, unsigned radix)* As per

`string->number`

above, but taking a C string, as pointer and length. The string characters should be in the current locale encoding (`locale`

in the name refers only to that, there’s no locale-dependent parsing).