Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/04/2020, 16:01
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Duda sobre representación de números decimales

Buscando en github he encontrado una librería de precisión para decimales y enteros escrita en C++:

https://github.com/Sam-bit/BigDecimal-CPP

La acabo de probar y definitivamente es mejor opción que Boost. Te adjunto un ejemplo:

Código C++:
Ver original
  1. #include "BigDecimal.h"
  2. #include <iostream>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char** argv) {
  8.     // usando la libreria
  9.     BigDecimal C;
  10.     BigDecimal A("0.1");
  11.     BigDecimal B("0.2");
  12.     C = A + B;
  13.     cout << "C = " << C.toString() << endl; // 0.3
  14.  
  15.     // forma nativa (con error)
  16.     float a = 0.1;
  17.     float b = 0.2;
  18.     float c = a + b;
  19.     cout << "C = " << setprecision(10) << c << endl; // 0.3000000119 (tiene un pequeño error de 0.0000000119)
  20. }

PD: Evidentemente, puedes utilizar cualquier operador aritmético (+-/*), no solo suma.

PD2: El método toString() solamente lo debes utilizar cuando quieras imprimir un número en pantalla. Para realizar operaciones, es igual que en C/C++ solo que declarando tipo BigDecimal.


Última edición por prueba230683; 25/04/2020 a las 08:11