Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: atof, miten takaisin

Jalmari91 [03.02.2007 21:51:25]

#

Eli mikä vastaa itoa, jos haluaa muuttaa double muuttujan char muuttujaksi. Ymmärsittekö =D ???

Antti Laaksonen [03.02.2007 22:13:09]

#

Tarvittava funktio on sprintf, joka toimii kuten printf, mutta tieto ei mene näytölle vaan merkkijonoon.

double luku = 12.345;
char mjono[10];
sprintf(mjono, "%.3f", luku);

Jalmari91 [03.02.2007 22:34:32]

#

Toimii kiitos =D

koo [03.02.2007 23:21:03]

#

Kiva, että taas jollakin toimii, mutta kannattaa miettiä vielä

* mitä tapahtuu, jos luku onkin 123456.789?
* miten korjaisit tuon ongelman?
* onko korjausehdotuksesi sama, kun luku voikin olla myös 1e234?
* mikä on desimaalierotin?

Antti Laaksonen [04.02.2007 00:53:03]

#

Hyviä huomautuksia, jotka olisivat kuuluneet jo minun viestiini. Funktio sprintf on vähän ikävä, kun siinä ei voi ilmoittaa merkkijonon suurinta sallittua pituutta. Jos luvun suuruudesta ei tiedetä mitään etukäteen, yksi ratkaisu olisi tutkia kokonaisosan pituutta ja esittää liian pitkät luvut kymmenen potenssien avulla (tällöin muotoiluosaan tulee merkki e eikä f).

Metabolix [04.02.2007 13:34:02]

#

%g tekee joitakin kokoon liittyviä tarkistuksia automaattisesti ja valitsee noista kahdesta muodosta sopivamman.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta