Page 1 of 1

Implementare float to string

Posted: 10 Jun 2013, 10:57
by florin_b
Salut,

Sint curios care este algoritmul pentru convertirea unui numar float la string, asa cum face functia sprintf. Am gasit pe net ce contine un float (partea aia cu mantissa si exponent), dar nu-mi dau seama cum sa ajung de la asta la un string. Pentru un integer e simplu, dar pentru float n-am nicio idee. M-am uitat in sursele de la Visual Studio alea din Vc\crt\src sa vad cum face sprintf la ei, dar am gasit doar comentariul asta in fisierul output.c:

/* floating point conversion -- we call cfltcvt routines */

Nu reusesc sa gasesc codul pentru cfltcvt, cred ca sursele alea nu-s complete de fapt. :)

Poate sa ma ajute cineva?

Re: Implementare float to string

Posted: 10 Jun 2013, 12:40
by Marius Bancila

Re: Implementare float to string

Posted: 11 Jun 2013, 09:04
by florin_b
Multumesc pentru link! M-am uitat putin prin codul ala si n-am inteles mai nimic. :) O sa mai incerc, dar mi-ar fi de mare ajutor o explicatie a formulelor folosite, daca stie cineva.

Re: Implementare float to string

Posted: 11 Jun 2013, 09:20
by tudor_t
Nu e de mirare ca e (foarte) complexa implementarea, cum sprintf trebuie sa parseze acel format string, care poate ajunge destul de complex. Oricum, sprintf face mult mai mult decat sa converteasca un float la string.. Ca sa vezi ca povestea nu e simpla, un exemplu de articol care descrie un posibil algoritm (nu stiu daca e si corect :) ): http://www.cs.indiana.edu/~burger/FP-Pr ... PLDI96.pdf

Re: Implementare float to string

Posted: 12 Jun 2013, 11:43
by florin_b
Stiu ca sprintf face mai mult dar pe mine ma interesa doar partea asta cu float. Oricum mersi pentru PDF, pare sa fie ce-mi trebuie mie. O sa-l studiez si revin daca am mai am intrebari!