c++ - not - La precisión de std:: to_string(double)
to_string is not a member of std (2)
Creo que el uso de std::stringstream
con setprecision
sería la elección más flexible / portátil, pero si conoce sus datos, como una solución alternativa, podría tratar de to_string
resultado to_string
. Por ejemplo:
std::string seriesSum(int n)
{
double sum = 0, div = 1;
for(int i = 0; i < n; i++) {
sum += 1.0 / div;
div += 3;
}
return std::to_string(round(sum * 100)/100).substr(0,4);
}
En el código anterior estoy imprimiendo con dos decimales 0.00
tomando los primeros 4 dígitos de la cadena, pero solo funciona porque sé que la parte entera nunca va por encima de un dígito. También puede usar string.find()
para buscar el separador decimal y usar su posición para calcular el tamaño de la subcadena, lo que lo hace un poco más dinámico.
¿Hay alguna forma de establecer la precisión del resultado al convertir un doble en una cadena usando std :: to_string () ?
No.
Devuelve: cada función devuelve un objeto de cadena que contiene la representación de caracteres del valor de su argumento que se generaría al llamar a
sprintf(buf, fmt, val)
con un especificador de formato de"%d"
,"%u"
,"%ld"
,"%lu"
,"%lld"
,"%llu"
,"%f"
,"%f"
o"%Lf"
, respectivamente, donde buf designa un búfer de caracteres interno de tamaño suficiente.