Arrotondamento galleggia con ostringstream
-
04-10-2019 - |
Domanda
Ho un problema per quanto riguarda la conversione da float a stringa di c ++ utilizzando ostringstream. Qui è la mia linea:
void doSomething(float t)
{
ostringstream stream;
stream << t;
cout << stream.str();
}
quando t ha valore -,89999 è arrotondare a -0,9, ma quando il suo valore è 0,0999 o minore rispetto a questo esempio 1.754e-7, è appena stampe senza fuori turno. quale può essere la soluzione per questo.
Soluzione
È necessario impostare la precisione per ostringstream utilizzando precision
es
stream.precision(3);
stream<<fixed; // for fixed point notation
//cout.precision(3); // display only
stream << t;
cout<<stream.str();
Altri suggerimenti
Se si desidera un particolare numero di cifre significative visualizzate provare a utilizzare setprecision (n), dove n è il numero di cifre significative che si desidera.
#include <iomanip>
void doSomething(float t)
{
ostringstream stream;
stream << std::setprecision(4) << t;
cout << stream.str();
}
Se si vuole a virgola fissa, invece di notazione scientifica, l'uso std::fixed
:
stream << std::fixed << t;
Inoltre si potrebbe desiderare di impostare la precisione come detto.
stream << setprecision(5) <<t ;
Ora, il vostro stream.str()
stringa sarà della precisione richiesta.