Título: Sobre el truncamiento - Consulta Publicado por: Cero++ en 31 Diciembre 2018, 17:14 pm Código
Título: Re: Sobre el truncamiento - Consulta Publicado por: MAFUS en 31 Diciembre 2018, 17:17 pm Mete el valor en un double y castea uno de los operandos a double.
Título: Re: Sobre el truncamiento - Consulta Publicado por: Cero++ en 31 Diciembre 2018, 22:53 pm Mete el valor en un double y castea uno de los operandos a double. Mira, aquí te dejo una pequeña parte del código: Código
Deberia castear así? Código
Título: Re: Sobre el truncamiento - Consulta Publicado por: MAFUS en 31 Diciembre 2018, 23:01 pm Puedo intuir qué es Racional, pero ¿Què es exactamente?
Título: Re: Sobre el truncamiento - Consulta Publicado por: Cero++ en 1 Enero 2019, 01:02 am Puedo intuir qué es Racional, pero ¿Què es exactamente? No sé si es retorica, así que, acá te adjunto el código: Código
Gracias por responder, me estaba olvidando Título: Re: Sobre el truncamiento - Consulta Publicado por: K-YreX en 1 Enero 2019, 10:11 am Cuando operas dos variables de tipo <int>, el resultado resulta de tipo <int> aunque lo guardes en un <double/float>. Por ejemplo:
Código Este trozo de código te mostraría por pantalla "2". Esto es porque divides (int)5 / (int)2 entonces el resultado es (int)2. Entonces aunque luego lo guardes en un <double> es como hacer <double res = 2>. Para evitar esto se puede cambiar el tipo al menos a uno de los operandos, una operación entre dos variables numéricas distintas devuelve el resultado con el tipo más grande de los dos operandos: - <int> / <int> = <int> - <double> / <int> = <double> (y al revés igual) Para no modificar el tipo puedes hacer un casting justo antes de la operación, quedaría algo así: Código Así conviertes la variable <a> en <double> pero sólo para hacer esa operación, después de hacer la división seguirá siendo de tipo <int>. PD: Los últimos métodos de tu clase (los de comparación) tienen el mismo problema, prueba a comparar dos racionales que uno sea menor que otro pero por menos de una unidad, por ejemplo 1/3 < 1/2, el operador < te va a decir que el primero no es menor que el segundo (porque va a comparar 0 < 0, no 0.3 < 0.5). Suerte :-X Título: Re: Sobre el truncamiento - Consulta Publicado por: Cero++ en 2 Enero 2019, 21:35 pm Cuando operas dos variables de tipo <int>, el resultado resulta de tipo <int> aunque lo guardes en un <double/float>. Por ejemplo: Código Este trozo de código te mostraría por pantalla "2". Esto es porque divides (int)5 / (int)2 entonces el resultado es (int)2. Entonces aunque luego lo guardes en un <double> es como hacer <double res = 2>. Para evitar esto se puede cambiar el tipo al menos a uno de los operandos, una operación entre dos variables numéricas distintas devuelve el resultado con el tipo más grande de los dos operandos: - <int> / <int> = <int> - <double> / <int> = <double> (y al revés igual) Para no modificar el tipo puedes hacer un casting justo antes de la operación, quedaría algo así: Código Así conviertes la variable <a> en <double> pero sólo para hacer esa operación, después de hacer la división seguirá siendo de tipo <int>. PD: Los últimos métodos de tu clase (los de comparación) tienen el mismo problema, prueba a comparar dos racionales que uno sea menor que otro pero por menos de una unidad, por ejemplo 1/3 < 1/2, el operador < te va a decir que el primero no es menor que el segundo (porque va a comparar 0 < 0, no 0.3 < 0.5). Suerte :-X Así que así se hace un casting, la verdad es que no sabía y mire por internet pero no apareció nada, y claro, no van a funcionar los métodos por el tema de los enteros jaja eso lo sabía. Gracias por la ayuda ;D |