Char to double – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Char to double – C / C++ – Fórum – Programujte.comChar to double – C / C++ – Fórum – Programujte.com

 

Rišo Kakaň0
Stálý člen
19. 11. 2006   #1
-
0
-

Neviete ako mozem previest premenu typu char na typ double. Poznam funkciu _ttoi na prevod char na int. Ale nepoznam char na double. Za odpoved dakujem.

Nahlásit jako SPAM
IP: ...–
Jura_
~ Anonymní uživatel
236 příspěvků
19. 11. 2006   #2
-
0
-

Budto pomoci fce atof nebo pouzit bezpecnejsi verzi a to strtod.



const char *num = "123.52";
double n = atof(num);




const char *num = "123.52";
char *Err;
double n = strtod(num, &Err);
if(Err == num) {chyba..}

Nahlásit jako SPAM
IP: ...–
Rišo Kakaň0
Stálý člen
19. 11. 2006   #3
-
0
-

Ano, ale to je z const char ja potrebujem s char. Nevies mi pomoct?

Nahlásit jako SPAM
IP: ...–
Pedro0
Stálý člen
19. 11. 2006   #4
-
0
-

To Wizard:
strtod by mal fungovat bez problemov aj s char*

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Jura_0
Stálý člen
19. 11. 2006   #5
-
0
-

Tak ted bych byl rad, kdybys jsi ujasnil, co potrebujes. Modifikator const v tom nahraje zadnou roli. Jestli ti jde jen o char(1 znak), tak na to snad nepotrebujes funkci, ale staci ti:



char c = '1';
double d = double(c-'0');

a p[okud jde o char*, tak pouzij vyse zminene funkce, a kdyby jsi preci jen trval na C++ reseni tak:


#include <cstdlib>
#include <iostream>
#include <sstream>

using namespace std;

int main(int argc, char *argv[])
{
char *str ="123.1234";
istringstream iss(str);
double n;
iss >> n;
cout << n << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
19. 11. 2006   #6
-
0
-

Jeste na doplneni:



#include <cstdlib>
#include <iostream>
#include <sstream>

using namespace std;

template<class T>
void atonum(const std::string& str, T& num)
{
std::istringstream iss(str);
iss >> num;
}
// nebo
template<class T>
T atonum(const std::string& str)
{
T num;
std::istringstream iss(str);
iss >> num;
return num;
}

int main(int argc, char *argv[])
{ int i;
atonum("123.2", i);
cout << i << endl;
double d;
atonum("123.356", d);
cout << d << endl;
int num = atonum<int>("123");
cout << num << endl;
cout << atonum<double>("123.5468") << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Porovnavani double — založil BigBear

Porovnání double — založil vazbok

Non scientific double — založil Tereza

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý