[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Prosty algorytm konwersji float/double do stringa (zastepujacy fcvt

Dariusz 'Wally' Walczak

12/14/2006 3:17:00 PM

Witam,

Z powodu braku dostepno?ci funkcji fcvt i kilku innych okoliczno?ci
sprawiaj?cych, ?e u?ycie zamiast niej funkcji sprintf jest bardzo
nieatrakcyjnym pomys3em, poszukuje mo?liwie przystepnie opisanego
algorytmu konwersji liczby floating point do stringa w mo?liwie
najprostszej postaci -- u3atwiaj?cej jego zrozumienie. W chwili
obecnej ma3o istotn? jest dla mnie wydajno?a tego algorytmu --
wa?na jest prostota i zrozumia3y opis. Kwestia formatowania te?
jest nieistotna (dlatego wystarczy mi funkcjonalno?a odpowiadaj?ca
funkcji fcvt).

Potrafie oczywi?cie prawid3owo wyci?gn?a dane zakodowane we floacie.
Czyta3em te? odpowiednie fragmenty "Sztuki programowania" oraz
"The Standard C Library". Je?eli chodzi o Knutha, to na podstawie
zawartych tam informacji jestem w stanie dokonaa konwersji na kartce,
co jednak nie przenosi sie na umiejetno?a zaprojektowania na podstawie
tych szcz?tkowych informacji algorytmu (szczególnie problematyczne s?
dla mnie bardzo du?e liczby, dla których niezbednych obliczen nie da sie
wykonaa na zwyczajnych typach). Je?eli chodzi o ksi??ke Plaucera, to
przedstawia on swoj? implementacje funkcji fcvt, niestety nie
zag3ebiaj?c sie w opis algorytmu. Licencja nie pozwala te? na u?ycie
jego kodu ?ywcem. Znalaz3em w sieci artyku3 "Printing Floating-Point
Numbers Quickly and Accurately"[1], ale to te? nie to... Pojawia sie
w nim odniesienie do artyku3u "How to print floating-point accurately"
(podobnie jak w wielu innych miejscach w sieci), ten jednak jest
p3atny[2]... :-(


Mam w zwi?zku z powy?szym nastepuj?ce pytania:
1) Czy wiecie gdzie szukaa (siea lub ksi??ki dostepne w bibiliotekach,
ew. w polskich ksiegarniach) przystepnego (bardziej lub mniej) opisu
wspomnianego algorytmu lub jakiej? przystepnej pozycji u3atwiaj?cej
tworzenie takich algorytmów samodzielnie?
2) Czy znacie jak?? porz?dn? implementacje funkcji fcvt udostepnion? na
licencji typu BSD/MIT?
3) Mo?e kto? mia3 okazje zapoznaa sie z artyku3em[2] i mo?e sie
podzielia opini? na jego temat. Czy mo?e on bya dla mnie przydatny?


Z góry dziekuje za wszelkie wskazówki i informacje.

[1] http://www.cs.indiana.edu/~burger/FP-Printing-...
[2] http://portal.acm.org/citation.cf...

--
Pozdrawiam,
Wally
1 Answer

Bartek Dajewski

12/15/2006 1:32:00 AM

0

Cze?a.

U?ytkownik "Dariusz 'Wally' Walczak" <wally2@poczta.oooneeet.pl.invalid>
napisa3 w wiadomo?ci news:uzm9qh5hh.fsf@poczta.onet.pl...
> Witam,
>
> Z powodu braku dostepno?ci funkcji fcvt i kilku innych okoliczno?ci
> sprawiaj?cych, ?e u?ycie zamiast niej funkcji sprintf jest bardzo
> nieatrakcyjnym pomys3em, poszukuje mo?liwie przystepnie opisanego
> algorytmu konwersji liczby floating point do stringa w mo?liwie
> najprostszej postaci -- u3atwiaj?cej jego zrozumienie. W chwili
> obecnej ma3o istotn? jest dla mnie wydajno?a tego algorytmu --
> wa?na jest prostota i zrozumia3y opis. Kwestia formatowania te?
> jest nieistotna (dlatego wystarczy mi funkcjonalno?a odpowiadaj?ca
> funkcji fcvt).

A mo?esz u?ya floor, log10 i pow10? Je?li tak, to podziel x przez
pow10(floor(log10(x))-liczba_cyfr_wyniku) i u?yj ultoa. Przecinek jest na
pozycji równej floor(log10(x)).

--
Pozdrawiam :-)
Bartek