C++/Konwersja/Double To String

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.

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

0

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

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

Wersja dla Twojego konkretnego przypadku:

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

a potem

Memo1->Lines->Add("Miejsce zerowe funkcji x1=("+toStringPrec(x1, 2)+",0)");
0

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

0
Memo1->Lines->Add(AnsiString("Miejsce zerowe funkcji x1=(")+x1+",0)");
0
vpiotr napisał(a):

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

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:

ostringstream oss;
oss << "Miejsce zerowe funkcji x1=(" << double << ",0)";
Memo1->Lines->Add(oss.str());

1 użytkowników online, w tym zalogowanych: 0, gości: 1