Gostaria de saber se posso usar o operador modulo tanto com inteiros quanto com ponto flutuante.
Pois outro dia fiz um programinha básico: segue abaixo
public class TesteModulo
{
public static void main(String[] args)
{
float a=6.6f;
float b = 2f;
System.out.println(a%b);
}
}
Eu sei que o resto é 0, porém ele não retorna zero - cheguei a colocar b como int = 2 (só para desencargo) pois sei que se b tivesse uma parte fracionário, apenas seria considerada a parte inteira.
Gostaria de saber o porque, se por causa da mistura de tipos.
O resto é 0.6, não zero.
Esse operador só serve para números inteiros. Se precisar usa-lo assim, terá que converter os tipos primeiro. Aí vc faz arredondamentos, se achar necessário.
Caso contrário, faça simplesmente
public class TesteModulo {
public static void main(String[] args) {
float a=6.6f;
float b = 2f;
int ia = (int) a;
int ib = (int) b;
System.out.println(ia % ib);
}
}
PS: Quando postar códigos, deixe formatado, como eu fiz ali. Para isso, vc usa as tags code. Se vc não sabe fazer isso ainda, leia esse tópico:
http://www.guj.com.br/posts/list/50115.java
Além disso, vou mover este tópico para “Java Básico”.
Obrigada por esclarecer minha dúvida e, sim irei ler o tópico sobre como formatar.
Porém eu só queria fazer uma retificação…6.6 / 2 ou 6.6 / 2.0, terá como “zero” resultado, estou falando de matemática, porém o java (caso eu use o modulo com operandos não inteiros) ele só considera a parte inteira do quociente.
Sim, porque a operação de resto só tem sentido com números inteiros. Se você levar em conta a parte fracionária, todo número terá resto zero.
5.0 / 2 = 2.5 (resto 0)
9.0 / 4 = 2.25 (resto 0)
E por aí vai…
E é para resto que serve o operador %
Agora, se você quer a operação de módulo, |x|, então deve usar Math.abs()
[code]float x = -12.7;
float y = 15;
System.out.println(Math.abs(x));
System.out.println(Math.abs(y)); [/code]