Autor Tema: Java crear un algoritmo para calculo de potencias de diez Ejercicio CU00644B  (Leído 3738 veces)

mzamora60

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Buena tarde. Tengo duda sobre porque en mi algoritmo para calcular una potencia y despues multiplicarla por otro numero no me da el no. entero como deberia.

Código: [Seleccionar]
package exponenciador;
 
  public class multiplicadorDieces {
  public multiplicadorDieces(){} 

public int multiplicarPorDieces (double m, int n){
   int resultado = 1;
   for ( int i= 1; i<=n; i++  ){
   resultado =  (resultado * 10);
}
   System.out.println(m + " * " + resultado + " = " +  m * resultado);
   return resultado;
}
  public static void main (String[] args){
    multiplicadorDieces multiplicaPorDiez = new multiplicadorDieces();
    multiplicaPorDiez.multiplicarPorDieces(2.55, 2);   
   }
  }

El resultado de multiplicar 2.55 * 100 deberia de ser 255, sin embargo al correr el programa arroja lo siguiente:

2.55 * 100 = 254.99999999999997
BUILD SUCCESSFUL (total time: 7 seconds)





Si alguien pudiera orientarme se los agradeceria bastante.

Saludos cordiales,
 :)
« Última modificación: 18 de Mayo 2015, 14:23 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Generación de algoritmo para calculo de potencias. (CU00644B)
« Respuesta #1 en: 17 de Mayo 2015, 00:11 »
Hola mzamora60:

Esto que tu observas es por el grado de precisión al trabajar con un atributo del tipo double. El resultado es el esperable, está bien que de ese resultado al hacer la operación que realizas.

De todos modos, fíjate que el grado de error en el resultado es prácticamente cero en una aplicación práctica, del orden de 0.00000000000003 que al ser tan bajo podríamos despreciarlo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Generación de algoritmo para calculo de potencias. (CU00644B)
« Respuesta #2 en: 18 de Mayo 2015, 14:22 »
Hola, el problema de la precisión decimal en este ejercicio se comenta en otros hilos. Viendo este por ejemplo https://www.aprenderaprogramar.com/foros/index.php?topic=1972.0 creo que se puede aclarar un poco el por qué ocurre eso (que es un tanto inesperado). Saludos.

macarena2405

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Código: [Seleccionar]

  public static void main (String[] args){
    multiplicadorDieces multiplicaPorDiez = new multiplicadorDieces();
    multiplicaPorDiez.multiplicarPorDieces(2.55, 2);   
   }
  }
 

esto para que sería? crea un objeto y ya directamente le pasa los parámetros de error?   public static void main (String[] args){ esto que significa
« Última modificación: 20 de Mayo 2015, 08:32 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Hola Macarena:

Este método corresponde a lo que se llamará luego "método principal".
No quiero ahondar en esto en esta instancia del curso. Pienso que deberías continuar y más adelante se tratará en detalle sobre ello en una lección. Los temas están ordenados de manera sistemática y respondiendo a una razón pedagógica.
Igualmente destaco y celebro (una vez más) el interés que demuestras en cada ejercicio por que no quede nada sin entender.  :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".