Foros del Web » Programación para mayores de 30 ;) » Java »

Operaciones matematicas

Estas en el tema de Operaciones matematicas en el foro de Java en Foros del Web. Hola, saludos, haber si alguien puede explicarme, estoy empezando a leer un libro para aprender a programar en java y me surge la siguiente duda, ...
  #1 (permalink)  
Antiguo 07/02/2015, 17:44
 
Fecha de Ingreso: noviembre-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Operaciones matematicas

Hola, saludos, haber si alguien puede explicarme, estoy empezando a leer un libro para aprender a programar en java y me surge la siguiente duda, estoy haciendo un programa que realice la division de 2 numeros enteros y tambien muestre el resto de esa division y el resultado se muestre en una variable double, el error que me sucede es que mientras se este diviendo por ejemplo 25/5 todo va bien, pero al dividir lo contrario el resultado de la division me da 0 y me deberia de dar 0.2 y de resto segun yo deberia de dar 0 y me da 5.0, note que si en lugar de declarar 'x' y 'y' como int las desclaro como double el problema de la division se soluciona pero no el de resto(%) continua apareciendo 5.0 el codigo es este:

import java.io.*;
import java.util.Scanner;

class Operaciones
{
public static void main(String[] arg)
{
int x, y;
double z;
Scanner entrada = new Scanner(System.in);


System.out.print("Ingresar el primer numero entero:");
x = entrada.nextInt();
System.out.print("ingresar el segundo numero entero:");
y = entrada.nextInt();
z = x/y;
System.out.println("Operacion 1");
System.out.println(x + "/" + y + "=" + z);
z = x%y;
System.out.println("Operacion 2");
System.out.print(x + "%" + y + "=" + z);
}
}
  #2 (permalink)  
Antiguo 07/02/2015, 21:47
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 7 meses
Puntos: 155
Respuesta: Operaciones matematicas

...primero, aclarando temas...si efectuas operaciones entre enteros, nunca puede haber resto, ya que si existieria, queda truncado...de ahi que en java 3 / 2 = 1, y la parte decimal ni aparece...

...para obtener resto tenes que trabajar con float o double.

..sobre el tema del module, es correcto 5 % 25 = 5.0
  #3 (permalink)  
Antiguo 08/02/2015, 06:16
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: Operaciones matematicas

Cita:
..primero, aclarando temas...si efectuas operaciones entre enteros, nunca puede haber resto, ya que si existieria, queda truncado...de ahi que en java 3 / 2 = 1, y la parte decimal ni aparece...

...para obtener resto tenes que trabajar con float o double.
Creo que es al contrario. El modulo se puede obtener perfectamente con enteros.

int x = 10;
int y = 7;
x % y = 3;


Precisamente cuando el operador modulus no funciona como se espera en este ejecicio es cuando utilizamos double o float (de hecho, en otros lenguajes como C/C++ solo está permitido el operador % entre operadores de tipo int). En ese caso nos devuelve el modulo de la división entera entre los dos numeros, es decir 5 % 25 = 5. Eso es el modulo, computacionalmente: mod(a,m) = a - m.*floor(a./m)

El resto final que nos queda en una division entre dos numeros usando decimales no tiene sentido obtenerlo ya que siempre va a ser finalmente 0, salvo que el resultado sea periodico.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #4 (permalink)  
Antiguo 08/02/2015, 12:48
 
Fecha de Ingreso: noviembre-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Operaciones matematicas

Ok, note que al dividir 2 enteros el resultado que arroja es un valor entero sin decimales aunque el resultado se guarde en una variable double o float, ejemplo:
int x, y;
double z;

x= 9
y= 5

z = x/y;

el resultado de z que me arroja al realizar la operacion es 1, cuando exactamente es 1.8, existe alguna forma de dividir dos ENTEROS y que me muestre el resultado con decimales? como seria la sentencia?

gracias
  #5 (permalink)  
Antiguo 08/02/2015, 14:13
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Operaciones matematicas

Hola:

Hay que convertirlo a float/double previamente, puedes hacerlo con algo así

z = 1.0*x/y

Al multiplicar 1.0 por x el resultado es double/float y a partir de ahí ya va bien. También puedes hacer un "cast"

z = (float)x/y

no estoy seguro si testo convierte la x a float y luego divide o si hace primero x/y y convierte el resultado a float (con lo que no arreglarías nada). En este segundo caso, deberías poner un paréntesis más

z = ((float)x)/y

o bien "cast" de la y

z = x/(float)y;

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: matematicas, operaciones, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:42.