Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Naimaderis en 16 Diciembre 2016, 03:33 am



Título: Problema con float, no toman el valor que tienen que tomar
Publicado por: Naimaderis en 16 Diciembre 2016, 03:33 am
Estoy teniendo un problema con el lenguaje, algo, que no entiendo bien, el siguiente código, no para nunca:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5.    float y;
  6.  
  7.    for (y= 0.1; y != 1.0 ; y = y + 0.1){
  8.  
  9.        printf( "%f \n", y );
  10.  
  11.    }
  12.  
  13.    return 0;
  14. }

Ademas, los float que muestra cuando compilo tienen demaciados decimales, los cuales no se limitan a 0.1 , 0.2 , 0.3 sino por ejemplo 273.708489.

Siento que hay algo detras de todo esto, que no estoy comprendiendo.

Para observar mejor donde estaba el problema, le coloque esta linea:

Código
  1. if (y > 1)
  2.        {
  3.            break;
  4.        }

Me di cuenta, que "y" toma el valor 1, el cual se muestra como "1.0000000".

Probe con limitar los numeros que se muestran despues de la coma, pero aun asi, no funciono.


Título: Re: Problema con float, no toman el valor que tienen que tomar
Publicado por: engel lex en 16 Diciembre 2016, 03:42 am
puede que no sea una respuesta directa pero aquí todo lo que hay que saber sobre los float inicialmente
https://es.wikipedia.org/wiki/Coma_flotante (https://es.wikipedia.org/wiki/Coma_flotante)


puede que no sea puntual pero: es un problema de precisión