2011-05-09 10 views
29

Estoy escribiendo un programa en QT. Quiero convertir un double en un Qstring en C++.Convierte un doble en un QString

+0

@Macmade, soy nuevo en QT y CPP. Pero tengo un código de Java, así que quiero convertirlo a cpp para la aplicación qt. – Nagaraju

Respuesta

62

método del número de uso QString (docs son here):

double valueAsDouble = 1.2; 
QString valueAsString = QString::number(valueAsDouble); 
+0

Este es molesto ya que la precisión es fija. – ManuelSchneid3r

+0

PRECAUCIÓN: Esa llamada puede ocasionar pérdida de precisión. Hice esa misma llamada una vez y obtuve 6.84442e + 06 de 6844418.0, por ejemplo. Eran coordenadas UTM métricas, por lo que la pérdida de 10 m era inaceptable. Por favor, tenga cuidado dependiendo de la aplicación. Usé 'std :: stringstream ss; ss << std :: setprecision (12); ss << (double) value; '* ¿Cómo puedo marcar los bloques de código en esta cosa? * –

16

En lugar de QString::number(), lo usaría QLocale::toString(), para que pueda obtener seperatores grupo local conscientes como el alemán "1.234.567,89".

+0

muy buen punto. +1 –

+2

No siempre. Necesito convertirme al sistema estadounidense (48.1), y esto sería un desastre. –

6

Puede utilizar arg(), de la siguiente manera:

double dbl = 0.25874601; 
QString str = QString("%1").arg(dbl); 

Esto supera el problema de: "precisión fija" en las otras funciones como: setNum() y número(), que va a generar números aleatorios para completar la precisión definida

+0

De acuerdo con el documento 'La conversión usa la configuración regional predeterminada', la precisión también es -1 por defecto en lugar de 6 para' QString :: number' – ymoreau

0

Sobre la base de la respuesta de @ Kristian, tuve el deseo de mostrar un número fijo de decimales. Eso se puede lograr con otros argumentos en la función QString::number(...). Por ejemplo, yo quería 3 decimales:

double value = 34.0495834; 
QString strValue = QString::number(value, 'f', 3); 
// strValue == "34.050" 

El 'f' especifica la notación formato decimal (más información here, también puede especificar la notación científica) y el 3 especifica la precisión (número de decimales). Probablemente ya esté vinculado en otras respuestas, pero se puede encontrar más información sobre la función QString::numberhere in the QString documentation

Cuestiones relacionadas