C++/Konwersja/Double To String

C++/Konwersja/Double To String
W9
  • Rejestracja:około 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:18
0

Witam!
Potrzebuję przekonwertować double do stringa, tak żebym mógł go wypisać w memo razem z teksem, np:
Memo1->Lines->Add("Miejsce zerowe funkcji x1=("+double+",0)");
i od razu jak się tak żeby wypisało do 2giego miejsca po przecinku. Na float wiem jak to zrobić ale na double nie mogłem rozkminić czego użyć a łażenie po google nic mi nie dało.

Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:12 dni
  • Postów:2512
1
woocash94 napisał(a):

Na float wiem jak to zrobić ale na double nie mogłem rozkminić czego użyć a łażenie po google nic mi nie dało.

Naprawdę?
http://stackoverflow.com/questions/10934044/converting-a-precision-double-to-a-string

Tutaj jest konwersja z wykorzystaniem string stream, a także co bardziej ciekawe:
http://en.cppreference.com/w/cpp/string/basic_string/to_string
dla c++11

n0name_l
Uprzedziles mnie :) juz te same linki mialem w clipboardzie.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Jeśli to nie C++11 to się używa takiego klasycznego kodu:

Kopiuj
template <class T> 
std::string toString(const T& t)
{
    std::ostringstream oss;
    oss << t;
    return oss.str();
} 

Wersja dla Twojego konkretnego przypadku:

Kopiuj
template <class T> 
std::string toStringPrec(const T& t, int prec)
{
    std::ostringstream oss;
    oss << std::setprecision(prec) << t;
    return oss.str();
} 

a potem

Kopiuj
Memo1->Lines->Add("Miejsce zerowe funkcji x1=("+toStringPrec(x1, 2)+",0)");
edytowany 1x, ostatnio: vpiotr
K5
  • Rejestracja:około 12 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Tutaj,obok
  • Postów:759
0

Jeśli mój post jest dowodem mojej niekompetencji, to trudno, ale po to pytam, żeby się czegoś dowiedzieć.
vpiotr
było wyżej, ale nie umożliwia podania precyzji - ZTCW
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:3 minuty
0
Kopiuj
Memo1->Lines->Add(AnsiString("Miejsce zerowe funkcji x1=(")+x1+",0)");

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 12 godzin
0
vpiotr napisał(a):

Jeśli to nie C++11 to się używa takiego klasycznego kodu:

Kopiuj
template <class T> 
std::string toString(const T& t)
{
    std::ostringstream oss;
    oss << t;
    return oss.str();
} 

Napisanie takiej funkcji jest kuszące, ale zwykle nie ma potrzeby, wystarczy tylko trzymać się używania strumienia:

Kopiuj
ostringstream oss;
oss << "Miejsce zerowe funkcji x1=(" << double << ",0)";
Memo1->Lines->Add(oss.str());
Zobacz pozostałe 2 komentarze
Azarien
@_13th_Dragon: czepiasz się, skopiowałem przykład z oryginalnego posta.
Azarien
@vpiotr: ale czemu na stałe? tylko lokalnie, w funkcji..
_13th_Dragon
Ja nie o przykładzie mówię zaś o twoim przykładzie
vpiotr
@Azarien, chodzi Ci o to że i tak korzystamy ze stream-a gdy budujemy taki string? Jest to rzeczywiście jakaś koncepcja. Ale widocznie się nie sprawdziła, skoro zrobili std::to_string (bardziej uniwersalne).
Azarien
jak mamy Boosta to można też zrobić lexical_cast&lt;string&gt;(3.14)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.