Re: Float to String
From: David C. Hoos (david.c.hoos.sr_at_ada95.com)
Date: 11/08/04
- Previous message: Rob Veenker: "Re: some questons about A#"
- In reply to: Pascal Obry: "Float to String"
- Next in thread: David C. Hoos: "Re: Float to String"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Mon, 8 Nov 2004 14:13:54 -0600 To: "Pascal Obry" <pascal@obry.net>
This is closely-related to a problem I encountered something over
ten years ago.
The problem in that case was that values stored in an Oracle database
when later extracted sometimes differed in the lsb.
What makes the problem similar is that Oracle required the data to be
stored in decimal format. The problem with that is that decimal numbers
are not, in general, exactly represent in binary. E.g. the decimal
number 0.1 is a non-terminating binary number.
The good news is that since binary numbers in a machine per force have
a finite length, they can all be exactly represent as decimal numbers.
The bad news about this is that the Text_IO.Float_IO package
implementations I have seen are not capable of outputting those exact
representations, and we, therefore, were obliged to implement our
own, in order to satisfy the requirements of our customer to have
equivalence down to the last bit.
For binary numbers having n bits following the binary point, n digits
are required following the decimal point to exactly represent the
fractional part of the value. Such exact representations will always
terminate with the digit "5."
For binary numbers having n bits preceding the binary point, the
number of decimal digits required to exactly represent the whole-
number part of the value is (n log2 (10)) + 1.
I hope this helps.
----- Original Message -----
From: "Pascal Obry" <pascal@obry.net>
Newsgroups: comp.lang.ada
To: <comp.lang.ada@ada-france.org>
Sent: Monday, November 08, 2004 11:06 AM
Subject: Float to String
>
> I was wondering if there is a way to save a float into a string and read
it
> back without loosing precision ?
>
> I tried something like:
>
> F_Str : String (1 .. Float'Base'Digits);
>
> Float_Text_IO.Put (F_Str, My_Float, Aft => Float'Base'Digits);
>
> But this is not enough... Ideas ?
>
> Thanks,
> Pascal.
>
> --
>
> --|------------------------------------------------------
> --| Pascal Obry Team-Ada Member
> --| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
> --|------------------------------------------------------
> --| http://www.obry.org
> --| "The best way to travel is by means of imagination"
> --|
> --| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595
> _______________________________________________
> comp.lang.ada mailing list
> comp.lang.ada@ada-france.org
> http://www.ada-france.org/mailman/listinfo/comp.lang.ada
>
- Previous message: Rob Veenker: "Re: some questons about A#"
- In reply to: Pascal Obry: "Float to String"
- Next in thread: David C. Hoos: "Re: Float to String"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|