Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Anonimo123456 en 8 Diciembre 2012, 15:33 pm



Título: Tengo un problema con las divisiones en Java.
Publicado por: Anonimo123456 en 8 Diciembre 2012, 15:33 pm
import java.io.*;
public class div
{
   
   public static void main (String args[]) throws IOException{
   
   
   InputStreamReader isr = new

InputStreamReader (System.in);
   BufferedReader br = new BufferedReader (isr);

   try      
   {
      System.out.println("Divisor 1 : ");
      double d1 = Double.parseDouble (br.readLine());
      System.out.println("Divisor 2 : ");
      int d2 = Integer.parseInt (br.readLine());
      double div=d1/d2;
      System.out.println("resultado: "+div);
   }
   catch (ArithmeticException e)
   {
      System.out.println("Error");
   }
   
   
   }
}


Al introducir ese código se supone que si intentamos dividir entre 0 me tiene que salir un mensaje de error pero en cambio lo que ocurre es que me pone infinity porque ocurre esto??


Título: Re: Tengo un problema con las divisiones en Java.
Publicado por: sapito169 en 8 Diciembre 2012, 19:44 pm
Para algunas interpretaciones un numero divido entre 0 es infinito.Esto se debe que si tenemos un numero constante y lo dividimos entre un numero cada ves mas pequeño tiende a ser infinito

http://fooplot.com/#W3sidHlwZSI6MCwiZXEiOiIzL3giLCJjb2xvciI6IiMwMDAwMDAifSx7InR5cGUiOjEwMDAsIndpbmRvdyI6WyItMjQuNzk1NTMyMjI2NTYyNDc1IiwiMjQuNzk1NTMyMjI2NTYyNDc1IiwiLTE1LjI1ODc4OTA2MjQ5OTk4NiIsIjE1LjI1ODc4OTA2MjQ5OTk4NiJdfV0-

en esta gráfica puedes ver que la curva cuando los valores de x se pegan mas a 0 y crece

mira en lo personal yo prefiero que cuando se divida un numero entre cero me lanza un exeption asi throw ExcepcionAritmeticaDivisionInvalidadEntreCero por que para mi es importante que el código sea intuitivo y fácil de entender así es mas decente así es como piensa el común de la gente

Mira la verdad que talvez salga algún genio que tenga una buena razón que justifique ese comportamiento seguramente tenga mayor conocimiento matemático que yo quisiera oír su opinión

Algún matemático por aquí que quiera decir algo

A otro punto es que si por ejemplo se llega a un punto que un programa haga esto 1/0 +3 el programa no moriría miserablemente de manera inesperada pero tendría un comportamiento raro retornando como respuesta infinito pero no lanzaría ninguna alarma y ese numero infinito lo mas probable es que se esparciría  por todas partes y todo valdría infinito sin que nadie sepa de manera fácil donde se jodió todo  :huh:





Título: Re: Tengo un problema con las divisiones en Java.
Publicado por: 1mpuls0 en 19 Diciembre 2012, 01:37 am
El límite de una constante cuando x tiende a 0 es infinito. (para la función A/x).

Por qué tienes d1 tipo doble y d2 tipo entero y div tipo doble? xD

Si quieres que te regrese ese error cambia todos los tipos a int.

ó bien toma el valor de d2 y si el dato ingresado es 0 muestra el mensaje de error :P


Saludos