tipos tabla lenguaje definicion declaracion datos comandos c++ types floating-point double decimal

tabla - tipos de datos en c++ definicion



Tipos de datos decimales C++ (3)

Las clases de Decimal TR no están implementadas para todos los compiladores. Algunos compiladores, por ejemplo, gcc , implementan el C Decimal TR y también proporcionan las extensiones correspondientes en C ++. En el pasado, existía una implementación de código abierto para C ++ Decimal TR disponible, pero no pude ubicarla. Si su compilador no es compatible con los tipos de decimales, su mejor opción es probablemente crear un contenedor para la biblioteca decNumber de IBM.

Para mejorar la situación en el futuro de C ++, he creado un plan para actualizar el TR y voy a convertir el TR actual en una propuesta completa lista para la próxima reunión del comité de C ++ (en abril en Bristol), tratando de obtener se adoptó en el estándar C ++, posiblemente en la revisión planeada para 2014. La implementación que tengo es parte de mi trabajo habitual y no me corresponde a mí decidir si puede publicarse públicamente, aunque hay alguna esperanza de que puede ser de origen abierto en algún momento.

¿Hay alguna manera de usar tipos de datos decimales como decimal32 , decimal64 o decimal128 en mis programas C ++?


Puede usar una solución de solo encabezado fácil de usar para C ++ con plantillas: https://github.com/vpiotr/decimal_for_cpp

Tenga en cuenta que esta no es una clase * Big * Decimal; está limitado a 64 bits de dígitos de "mantisa".

[tomado del enlace]

#include "decimal.h" using namespace dec; // the following declares currency variable with 2 decimal points // initialized with integer value (can be also floating-point) decimal<2> value(143125); // to use non-decimal constants you need to convert them to decimal value = value / decimal_cast<2>(333.0); // output values cout << "Result is: " << value << endl; // this should display something like "429.80" // to mix decimals with different precision use decimal_cast decimal<6> exchangeRate(12.1234); value = decimal_cast<2>(decimal_cast<6>(value) * exchangeRate); cout << "Result 2 is: " << value << endl; // this should display something like "5210.64" cout << "Result 2<6> is: " << decimal_cast<6>(value) << endl; // this should display something like "5210.640000"


use un int32 o int64, y (manualmente) cambie el punto decimal a donde desee que esté. Si está midiendo dólares, por ejemplo, simplemente mida centavos en su lugar y muestre el valor de manera diferente. ¡sencillo!