Forum » Programiranje » C++ string "2/3" to double - kako?
C++ string "2/3" to double - kako?
twom ::
atof ("0.6666666) vrne 0.66...,
če pa imam "2/3" mi pa vrne 2.0...
S katero funkcijo bi lahko pretvoril string "2/3" v double?
Lep pozdrav,
Peter
če pa imam "2/3" mi pa vrne 2.0...
S katero funkcijo bi lahko pretvoril string "2/3" v double?
Lep pozdrav,
Peter
- spremenil: twom ()
BlueRunner ::
atof pretvari niz v številko, ni pa to kalkulator, ki bi znal računati ali pa bi razumel ulomke.
2.0 dobiš zato, ker se mu "ustavi" pri znaku '/', ki ni del zapisa številke.
2.0 dobiš zato, ker se mu "ustavi" pri znaku '/', ki ni del zapisa številke.
Senitel ::
In iz katerega naslova je to čudno? Atof pretvori string v število. Ne rešuje pa matematičnih izrazov!
twom ::
Se opravičujem za slabo zastavljno vprašanje.
Ugotavljam, da drugi zaenkrat še ne znajo brati mojih misli, in tudi meni zaenkrat to še ne uspeva :)
Moje vprašanje je kako to narediti.
P.S moj prvi post sem poravil, da bo bolj jasno kaj želim.
Lp,
Peter
Ugotavljam, da drugi zaenkrat še ne znajo brati mojih misli, in tudi meni zaenkrat to še ne uspeva :)
Moje vprašanje je kako to narediti.
P.S moj prvi post sem poravil, da bo bolj jasno kaj želim.
Lp,
Peter
Zgodovina sprememb…
- spremenil: twom ()
Keki ::
Mogoče lahko uporabiš stringstream (sstream).
double j = (double)2/3; stringstream ss; ss << j; string a = ss.str(); cout<<a.c_str()<<endl;
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
Senitel ::
To sploh nima povezave s tem kar hoče peter_nn naredit, oziroma je ravno obratno. Ti začneš z double in končaš s stringom, on začne z stringom matematičnega izraza in hoče končat z double/float.
twom ::
Double bi mi čisto zadoščal.
Iz konfiguracijske datoteke berem enostavne nastavitve (5/6, 3/4, 2/3, 1/2), ki jih uporabljam kot string ("2/3") in kot double (0.6666..).
Sedaj preprosto vzporedno vodim dve spremenljivke (neki[i].dbl in neki[i].dblStr).
Lp,
Peter
Iz konfiguracijske datoteke berem enostavne nastavitve (5/6, 3/4, 2/3, 1/2), ki jih uporabljam kot string ("2/3") in kot double (0.6666..).
Sedaj preprosto vzporedno vodim dve spremenljivke (neki[i].dbl in neki[i].dblStr).
Lp,
Peter
dba ::
a bi bilo težko, da string najprej prečekiraš če vsebuje "/", potem pa ga parsaš na del pred "/" in del po "/" pa potem pretvoriš v double, pa deliš?
zhigatsey ::
Naredi si svoj "kalkulator", če ni že preveč za ta primer.. tako boš spustil lahko skozi še kaj
drugega kot samo "x/x"... Na code projectu je en kup primerov na to temo... išči pod
"expression evaluator", "reverse polish notation" itd...
Tule je en takšen primerček...
Lp...
drugega kot samo "x/x"... Na code projectu je en kup primerov na to temo... išči pod
"expression evaluator", "reverse polish notation" itd...
Tule je en takšen primerček...
Lp...
fiction ::
Vse je odvisno od tega kako splosen hoces biti (oz. koliko hoces zakomplicirati). Lahko podpres "x / y", "x operacija y" ali pa kar napises parser ter evaluator za izracun vrednosti poljubnega aritmeticnega izraza. To sicer ni tako zelo komplicirano, ampak vseeno je precejsen overkill za to kar hoces narediti.
Mogoce bi bilo smiselno razmisliti ze o tem, da bi samo spremenil zapis v konfiguracijski datoteki.
RPN je drugace zapis v postfiksni obliki (tako npr. pises "x y /" namesto "x / y"). Fora tukaj je, da ne rabis oklepajev za opis prioritete dolocenih operacij (vse je jasno v izrazu, ceprav ni nobenega oklepaja oz. zaklepaja). RPN kalkulator lahko naredis s pomocjo sklada. Operande vedno nalagas na sklad, ko prides do operacije pa nad vrhnjima dvema podatkoma naredis neko operacijo in das rezultat nazaj na sklad. Na koncu imas na vrhu samo en element - rezultat izraza. No, ampak za izraz v infiksni obliki (ala 1 + 2) ti to ne pomaga kaj dosti.
Mogoce bi bilo smiselno razmisliti ze o tem, da bi samo spremenil zapis v konfiguracijski datoteki.
RPN je drugace zapis v postfiksni obliki (tako npr. pises "x y /" namesto "x / y"). Fora tukaj je, da ne rabis oklepajev za opis prioritete dolocenih operacij (vse je jasno v izrazu, ceprav ni nobenega oklepaja oz. zaklepaja). RPN kalkulator lahko naredis s pomocjo sklada. Operande vedno nalagas na sklad, ko prides do operacije pa nad vrhnjima dvema podatkoma naredis neko operacijo in das rezultat nazaj na sklad. Na koncu imas na vrhu samo en element - rezultat izraza. No, ampak za izraz v infiksni obliki (ala 1 + 2) ti to ne pomaga kaj dosti.
zhigatsey ::
No saj zato ga pa najprej pretvoriš v postfiksno obliko, to je tudi
vključeno v podani primerček zgoraj...
Drugače pa išči pod "shunting yard algorithm"...
vključeno v podani primerček zgoraj...
Drugače pa išči pod "shunting yard algorithm"...
Keki ::
al pa da preprosto ovrednotiš x pa y z atoi pol pa ju zdeliš pa maš
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
napsy ::
#include <stdio.h> int main() { char *racun= "2/3"; float a, b; sscanf(racun, "%f/%f", &a, &b); printf("a: %f, b: %f\n", a, b); return 0; }
"If you die, you die. But when you live you live. There is no time to waste."
twom ::
#include <stdio.h> int main() { char *racun= "2/3"; float a, b; sscanf(racun, "%f/%f", &a, &b); printf("a: %f, b: %f\n", a, b); return 0; }
Uporabno in zelo enostavno
Lep pozdrav
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C (Izračun povprečja)Oddelek: Programiranje | 1609 (1243) | joze67 |
» | C++ double _1.0000imavrednost0.99999Oddelek: Programiranje | 1569 (1322) | Spura |
» | [Pomoč]Visual c++ CString to doubleOddelek: Programiranje | 911 (874) | PaX_MaN |
» | Python - problemOddelek: Programiranje | 2779 (2509) | slevin |
» | [c++] cin >> problemOddelek: Programiranje | 1436 (1106) | Tutankhamun |