/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Porque la división 2 / 5 no presenta decimales

 
      Índice del Foro elrincondelc.com -> FAQ de C
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
rir3760



Registrado: 01 Oct 2004
Mensajes: 7516
Ubicación: Mexico

MensajePublicado: 02/08/2012 8:25 am
Título: Porque la división 2 / 5 no presenta decimales

En C como en otros lenguajes la división entre enteros trunca, esto es, se pierde la parte decimal. Por ejemplo al ejecutar este programa:
Código:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   double num;
   
   num = 5 / 2;
   printf("%.2f\n", num);
   
   return EXIT_SUCCESS;
}

Su salida es:
Código:
2.00


Para obtener el numero preservando la parte decimal:

A) Al utilizar constantes literales al menos una de ellas debe indicar su parte decimal. Por ejemplo:
Código:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   printf("%.2f\n", 5.0 / 2);
   
   return EXIT_SUCCESS;
}


B) Al utilizar variables al menos una de estas debe ser de tipo "float", "double" o "long double". Por ejemplo:
Código:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   double cinco = 5;
   int dos = 2;
   
   printf("%.2f\n", cinco / dos);
   
   return EXIT_SUCCESS;
}


C) Convertir explícitamente al menos uno de los operandos al tipo "float", "double" o "long double". Por ejemplo:
Código:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   printf("%.2f\n", 5 / (double) 2);
   
   return EXIT_SUCCESS;
}


En todos los ejemplos la salida es la esperada: 2.50


Se recomienda declarar las variables de tipo "double" y no "float" salvo una buena razón. Ello por lo siguiente:

1) Las constantes como 3.141592 son de tipo "double".
2) Funciones variadicas como "printf" convierten sus argumentos de tipo "float" al tipo "double".
3) La mayoría de las funciones de la biblioteca estándar de C esperan argumentos de ese tipo (double).
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
      Índice del Foro elrincondelc.com -> FAQ de C
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com