C++/Konwersja/Double To String

C++/Konwersja/Double To String
W9
  • Rejestracja: dni
  • Ostatnio: dni
  • 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: dni
  • Ostatnio: 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

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
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)");
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tutaj,obok
  • Postów: 759
0

Możnaby użyć std::to_string z C++11
http://en.cppreference.com/w/cpp/string/basic_string/to_string

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
Memo1->Lines->Add(AnsiString("Miejsce zerowe funkcji x1=(")+x1+",0)");
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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());

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.