Hülye float formátum gyors olvasása?

 ( horvatha | 2010. február 15., hétfő - 13:41 )

Kedves HUP-osok!

Egy olyan progi kimenetét kellene feldolgoznom C programmal, mely sajátos módon értelmezi a lebegőpontos szabványt. Konkrétan: helytakarékosság miatt "7.35E-15" helyett "7.35-15"-öt ír.

Azon kívül, hogy a program írójának minden szépet kíván az ember, mit lehet tenni?

Persze, be tudom programozni C-ben, hogy "Ha egy stringnek egyetlen számot kell tartalmaznia, és nem az első pozíciójában van egy "-", akkor tegyél be elé egy "E"-t", de nem tud valaki elegánsabb megoldást? Nincs valami glibc opció, hogy így értse?

(Az eredeti, gyári program természetesen jól olvassa be ezt az E-tlen formátumot.)

Előre is kösz!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nekem is csak a string konverzió juteszembe. Szerintem csak így lehet.Az E-betűs verzió a szabvány.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

sed -e 's/\([0-9]\)-\([0-9.]\)/\1-E\2/g'

Ha van rá lehetőség, akkor ezt lefuttatod az adaton, és utána a progit, vagy progiból meghívod.

Illetve ha számjegy után csak ebben az esetben állhat "-" jel, akkor ennyi is elég:

sed 's/\([0-9]\)-/\1E-/g'

-----
Dropbox tárhely igénylése: https://www.getdropbox.com/referrals/NTI2MzM2MjA5

Ja, én csak C-s megoldásban gondolkodtam, de igaz.

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Hányat kell ebből beolvasni, hogy annyira kritikus a sebesség?

Pár 10^5-10^6 számot.

De nem írtam precízen: a fejlesztés sebessége számít. Amúgy már megírtam C-ben, nem volt nagy ügy.

Csak attól félek, hogy ez valami ritkán használt konvenció, aminek esetleg egyéb zakkantságai is vannak, amire nem készítettem fel a programomat, és majd később beüt, pedig valójában egy általam nem ismert '60-as évekből ittmaradt "őskövület-FORTRAN-tömör" kódolás, amit tudna a libc, csak én nem tudom megkérni rá.

nem, ez nem konvenció.
ilyet semmilyen normális rendszer nem használ.

Glibc opció nem hiszem, hogy van. Jellemzően a marhaságokat nem szokták implementálni.

A pozitívat úgy ábrázolja, hogy "7.35+15" a "7.35E15" helyett helytakarékosságból?

Az egyetlen normális mód az, hogy írsz egy függvényt, ami ellenőrzi, hogy van-e "E" a "-" előtt, ha nincs beraksz egyet, felülre meg írsz egy kommentet, hogy ez a függvény az idióták számábrázolását standard formátumra konvertálja.