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.

È stato utile?

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.

setprecision :

stream << setprecision(5) <<t ;

Ora, il vostro stream.str() stringa sarà della precisione richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top