[C++][Pomoc] String to float

Započeo [BU] Gigi_Falcone, Februar 08, 2013, 23:31:27 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pozdrav momci
Potrebna mi je pomoc kako konvertovati string u float ili double.
Problem je sledeci: koju god funkciju da iskoristim da konvertujem string u decimalnu vrijednost, konvertovana vrijednost je kratka, primjer:

string "123.123456789"

kada konvertujem dobijem float/double/long double: 123.123

Gdje grijesim?

Probao sam klasicno istringstream >> pa u float/double/long double, isti problem
Probao sam sve funkcije stof, stod, stold isti problem
Napomena: zesci sam noob kod c++ pa ako neko ima neki predlog, neka pomogne  :D



Moraš odrediti preciznost...

sve ti pise tu:
http://www.cplusplus.com/reference/iomanip/setprecision/

samo zapamti da ti konvertiranje iz stringa u float recimo i nije bas nesto precizno, ne do kraja...

Ne kontam kako to da turnem ovdje:

long double test = stold(coordvar3);


edit:
zar ta funkcija ne limitira duzinu vec postojeceg floata?
ja zelim kontra, da iz stringa konvertoujem u float al da mi doda sve brojeve iza zareza, a ne samo prva 3 ili 1


Kod:

.
.
.
//Treci Zarez
commapos[2]++;
commapos[3] = getlinestring.find(",",commapos[2]);
coordvar3 = getlinestring.substr(commapos[2],commapos[3] - commapos[2]);
cout << "coordvar3:" << coordvar3 << endl;

tu printa: 123.123123123123

zatim ide:

long double test = stold(coordvar3);
cout << "test:" << test << endl;

i onda printa: 123.123


a broj mi treba kao decimalni a ne kao string da bih mogao raditi operacije na njemu (sabiranje/oduzimanje)
Poslednja Izmena: Februar 08, 2013, 23:59:31 POSLE PODNE od [BU] Gigi_Falcone



evo ti dva nacina:
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;

int main( int argc, char ** argv ) {
char coordvar3[] = "123.123123123123";
cout << coordvar3 << endl;

double nest;
nest = strtod (coordvar3,NULL);
cout << setprecision (16) << nest << endl;
printf ( "%.12f" , nest);
return 0;
}


radi i sa setprecision i sa printf...

Ahaa, ja znaci grijesim, citao sam malo o tome, double nije broj koji se kao sam prikazuje, vec moras prikazati duzinu ako zelis da se cijeli vidi. Iako on prikaze samo meni 123.123 on je mnogo duzi od toga, samo po default-u cout mi ga prikaze kao mnogo kraceg, nego sto sam ja mislio  :)
Aj probacu nesto kad se vratim sa posla