Balkan SA:MP

Ostalo => Development => C, C++, C#, C-objective => Temu započeo: [BU] Gigi_Falcone poslato Februar 08, 2013, 23:31:27 POSLE PODNE

Naslov: [C++][Pomoc] String to float
Poruka od: [BU] Gigi_Falcone poslato Februar 08, 2013, 23:31:27 POSLE PODNE
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
Naslov: Odg: [C++][Pomoc] String to float
Poruka od: Dude poslato Februar 08, 2013, 23:44:23 POSLE PODNE
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...
Naslov: Odg: [C++][Pomoc] String to float
Poruka od: [BU] Gigi_Falcone poslato Februar 08, 2013, 23:51:50 POSLE PODNE
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)
Naslov: Odg: [C++][Pomoc] String to float
Poruka od: Dude poslato Februar 09, 2013, 07:16:51 PRE PODNE
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...
Naslov: Odg: [C++][Pomoc] String to float
Poruka od: [BU] Gigi_Falcone poslato Februar 09, 2013, 12:09:53 POSLE PODNE
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