Autor
|
Tema: Duda con "cast" en C (Leído 8,612 veces)
|
diegoCmC
Desconectado
Mensajes: 177
|
Me parece que no entendi bien del todo eso del cast, ilustro mi idea con codigo a ver si alguien me puede corregir #include<stdio.h>
main() { float numero=12.5, numero2=1.2; int division; division=(int)numero/numero2; printf("El valor de la division es %d\n", division); system("pause"); return 0; }
Cuando ejecuto este código, la idea que tengo yo es, que antes de realizar la división numero/numero2, lo que realiza es convertir numero a un entero de valor 12, y numero2 a un entero de valor 1, por lo tanto al dividirlos se almacenaria el resultado, 12, en la variable división, pero sin embargo el programa me muestra como resultado 9. A ver is alguien puede ayudarme
|
|
|
En línea
|
a todas las que me abrieron su coraza traeles suerte ya no creo en el amor pero querria volver a verte
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
Para que haga lo que queres numero2 tiene que ser entero, a ver si asi lo ves mas claro: division = (int)numero / (int)numero2;
|
|
« Última modificación: 18 Febrero 2012, 17:25 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
diegoCmC
Desconectado
Mensajes: 177
|
ahhh vale, ya entiendo lo que me pones, gracias. Ahora como curiosidad, como lo tenia yo, por que el resultado es 9??
|
|
|
En línea
|
a todas las que me abrieron su coraza traeles suerte ya no creo en el amor pero querria volver a verte
|
|
|
Caster
|
Yo sabía lo de Eternal Idol pero, me entra la imsa duda que a diego.
Saludos
|
|
|
En línea
|
|
|
|
diegoCmC
Desconectado
Mensajes: 177
|
claro, es que 12/1.2=10 no se por que pone 9 :S
|
|
|
En línea
|
a todas las que me abrieron su coraza traeles suerte ya no creo en el amor pero querria volver a verte
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
Es un problema de precision, si usas double te va a dar 10, con float la division da algo asi como 9.99999960263572 ...
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
farresito
Desconectado
Mensajes: 302
|
Sí. Como bien dice Eternal, a nivel muy bajo, el procesador tiene problemas de precisión. Si tienes que hacer casts con el int, por ejemplo, a veces va bien sumar 0.0001 o algo así. Cifras bajas.. Recuerda que un cast NO es redondear, es TRUNCAR (quitar todos los decimales a secas). Si tienes 10.0001 y haces un cast de int, te saldra 10, pero si tienes 9.99999, te quedaras con el 9.
Un abrazo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
"""BUSCO EJEMPLO VB PARA ENVIAR MAILS""""
Programación Visual Basic
|
gera
|
1
|
6,295
|
1 Septiembre 2005, 00:14 am
por programatrix
|
|
|
De donde puedo descargar utilidades: "Formas", "Estilos", "Motivos", D
Diseño Gráfico
|
Ad0nis
|
2
|
8,292
|
2 Septiembre 2006, 15:48 pm
por Ad0nis
|
|
|
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
|
taton
|
7
|
16,539
|
20 Septiembre 2006, 01:45 am
por taton
|
|
|
Duda sobre meta http-equiv="Content-Type" content="text/html; charset=utf-8"
Desarrollo Web
|
Hadess_inf
|
3
|
12,196
|
22 Julio 2010, 06:44 am
por Morris
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
13,232
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|