2010-03-30 23 views
9

¿Cuál es el tipo correcto de usar en el desarrollo de Qt (o C++ en general) para la aritmética decimal, es decir, el equivalente de System.Decimal struct en .Net?Tipo decimal en Qt (C++)

  • ¿Qt proporciona una estructura incorporada? (No puedo encontrarlo en los documentos, pero tal vez no sepa dónde buscar.)
  • ¿Hay una biblioteca C++ "estándar" para usar?

Respuesta

9

¿Cuál es el tipo correcto para utilizar en Qt desarrollo (o C++ en general) para aritmética decimal, es decir el equivalente de System.Decimal struct en .Net?

Ni la biblioteca estándar C++ ni Qt tienen ningún tipo de datos equivalente a System.Decimal en .NET.

¿Proporciona Qt una estructura incorporada? (I no lo encuentra en la documentación, pero tal vez no sé dónde buscar.)

¿Hay un "estándar" ++ biblioteca de C a uso?

Pero es posible que desee echar un vistazo a la GNU Multiple Precision Arithmetic Library.

[EDITAR] Una mejor opción que la biblioteca anterior podría ser qdecimal. Envuelve un flotante decimal que cumple con IEEE, que es muy similar (pero no exactamente igual) al decimal de .NET, y utiliza también las expresiones y prácticas de Qt.

2

No hay ningún tipo decimal en C++, y que yo sepa, tampoco hay ninguno proporcionado por Qt. Dependiendo de su rango de valores, una solución decente puede ser simplemente usar un unsigned int y dividir/multiplicar por una potencia de diez al mostrarlo.

Por ejemplo, si estamos hablando de dólares, usted puede hacer esto:

unsigned int d = 100; // 1 dollar, basically d holds cents here...

o si desea 3 cifras decimales y quería almacenar 123.456

unsigned int x = 123456; y sólo hacer algunos simplemente matemáticas cuando se muestran:

printf("%u.%u\n", x/1000, x % 1000);

+1

Es necesario poner a cero -pad los decimales. – Joey

1

Una búsqueda rápida gira hasta que gcc puede apoyar decimales directlyand que la información mucho más general está disponible en, por ejemplo, http://speleotrove.com/decimal/