Foros del Web » Programación para mayores de 30 ;) » C/C++ »

En C++ estoy sumando 10000 + 1000 y me da 10999

Estas en el tema de En C++ estoy sumando 10000 + 1000 y me da 10999 en el foro de C/C++ en Foros del Web. Hola, estoy volviendo a coger el C++ y me propuse a hacer unos ejercicios de los típicos que ponen para practicar, pero con éste me ...
  #1 (permalink)  
Antiguo 14/11/2010, 17:06
 
Fecha de Ingreso: abril-2009
Ubicación: Incomoda
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
En C++ estoy sumando 10000 + 1000 y me da 10999

Hola, estoy volviendo a coger el C++ y me propuse a hacer unos ejercicios de los típicos que ponen para practicar, pero con éste me he tomado ya mucho tiempo y me parece curioso que me este retornando una suma de forma incorrecta.
¿Porque sucede ésto? Pruebo con el número 24 y me da de salida:

BIN = 10999 <--- debería dar 11000
OCT = 30

Código C++:
Ver original
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5.  
  6. int xtoy(int x, int y){
  7.     int res = 0;
  8.     int c = 0;
  9.     for(int i = x; i > (y-1); x=int(i/=y), c++){
  10.         res+=pow(10,c)*(i%y);
  11.     }
  12.     res+=pow(10,c)*x;
  13.     return res;
  14. }
  15.  
  16. int main(int argc, char **argv)
  17. {
  18.     int n;
  19.     puts("CONVERSOR DE DECIMAL A: BIN Y OCT");
  20.     puts("=============================================================");
  21.     cout<<"Ingrese un numero: ";
  22.     cin>>n;
  23.     cout<<"BIN= "<<xtoy(n, 2)<<endl;
  24.     cout<<"OCT= "<<xtoy(n, 8)<<endl;
  25.     return 0;
  26. }

(Más info por si las moscas): Utilizo el Code::Blocks que utiliza el "mingw32-g++.exe" para compilar.
  #2 (permalink)  
Antiguo 14/11/2010, 17:27
 
Fecha de Ingreso: abril-2009
Ubicación: Incomoda
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: En C++ estoy sumando 10000 + 1000 y me da 10999

Bueno, como no me quedo quieto, he investigado más y encontre la respuesta en éste mismo foro:

http://www.forosdelweb.com/f13/ayuda-sumas-restas-no-exactas-544898/

Al parecer es un "BUG" no solo de C++, si no de JAVA y de Javascript, y quien sabe de cuales otros... :\

Solución alternativa: redondear con las funciones math de cada lenguaje.

Etiquetas: sumando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.