Tengo un problema con las divisiones en Java.

Iniciado por Anonimo123456, 8 Diciembre 2012, 15:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Anonimo123456

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??

sapito169

#1
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:




1mpuls0

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
abc