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)
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