# Re: string->number

This page is part of the web mail archives of SRFI 70 from before July 7th, 2015. The new archives for SRFI 70 are here. Eventually, the entire history will be moved there, including any new messages.

``` | From: Thomas Bushnell BSG <tb@xxxxxxxxxx>
| Date: Thu, 02 Jun 2005 13:05:29 -0700
|
| Aubrey Jaffer <agj@xxxxxxxxxxxx> writes:
|
| > Yes, I should have written "inexact numbers".
|
| Ok, but when we speak of symbolic "infinite precision" representations
| of sqrt(2), presumably we are using exact numbers.

No!  My point is that inexact numbers correspond to real number
neighborhoods; and hence have finite precision.

| > Can number->string return a string which can't be READ as a number?
| >
| > I had thought that 6.2.4 "Syntax of numerical constants" and 7.1.1
| > "Lexical structure" applied to the results of NUMBER->STRING.  If they
| > are independent, a note about that should be added to the report.
|
| I think they do, but implementations certainly can extend the syntax
| of numbers if they wish (provided that NUMBER->STRING, STRING->NUMBER,
| and READ all behave in the expected way).

The three groups of features dealing with numerical representation
are:

* number->string, string->number;

* numerical constants.

Section 6.2.3 Implementation restrictions:

Although Scheme allows a variety of WRITTEN NOTATIONS for numbers,
any particular implementation may support only some of them.

Section 6.2.4 Syntax of numerical constants

The syntax of the WRITTEN REPRESENTATIONS for numbers is described
formally in section Lexical structure.

Section 6.2.6 Numerical input and output

The procedure `number->string' takes a number and a radix and
returns as a string an EXTERNAL REPRESENTATION of the given number
in the given radix such that ...

Section 6.6.2 Input:

Section 6.6.3 Output:

`Write' and `display' create WRITTEN REPRESENTATIONs.

The text in section 6.2.6 specifies that `number->string' produces an
EXTERNAL REPRESENTATION.  Thus the numerical representations produced
by `number->string' have the same notation as numerical constants.
`Read' converts EXTERNAL REPRESENTATIONs, so it also has the same
notation as numerical constants.

`number->string' and `string->number' are constrained to use the same
representations.

The relation between the forms `read' and `write'n is not explicitly
stated, but is reasonably assumed to be the same.

```