Validar um número, é decimal ou não!?!

Eu queria validar um número, para saber se e inteiro ou decimal, tipo nesse exemplo abaixo com o valor da variável d.
Se essa divisão der um numero inteiro ele para (break), senão ele continua, incrementando o valor da variável Naux, ate encontrar um número que seja inteiro.

Alguem pode me ajudar nisso dai?

[color=blue]int d = 0;
while(true)
{

d = (1 + z*Naux) / n;
System.out.println(d);
if (d …)
{
result = d;
Naux = 0;
break;
}
else Naux++;

}[/color]

Quando você faz contas com ponto flutuante, não deve se esquecer de que um resultado nunca é exato. Mesmo que eu lhe dissesse que você poderia fazer algo como:

Math.rint (d) == d

para dizer que um número é inteiro, isso não seria adequado - pode ser que alguma vez o seu algoritmo entrasse em loop.

O correto é chegar a uma aproximação adequada, por exemplo:

Math.abs (Math.rint (d) - d) <= 1E-10

se quiser que o seu número seja inteiro, a menos de um erro de 10 elevado a -10.

vi que existe uma forma de pegar a parte inteira do decimal, mas nao existe uma forma de pegar o que vem depois da virgula/ponto. Assim seria so ver se eh zero.

[quote=micheljuca]vi que existe uma forma de pegar a parte inteira do decimal, mas nao existe uma forma de pegar o que vem depois da virgula/ponto. Assim seria so ver se eh zero.[/quote]Existe, é só diminuir o decimal do inteiro… 20.00001 - 20 = 0.00001, que é diferente de 0.

Até aí tudo bem, mas o problema original era calcular um determinado número via aproximações sucessivas (pelo que imagino).
Via aproximações sucessivas, pode ser que você nunca chegue ao tal número inteiro - não é que você tenha algo do tipo “0, 0.9, 0.99, 0.9999” e não consiga chegar a 1, já que a precisão é finita.
O problema é que as contas podem ficar paradas em um determinado ponto - como “0.9999, 0.9999, 0.9999” etc. e nunca chegar ao tal número inteiro.
Por isso, é melhor estabelecer uma determinada tolerância e pegar o número mais próximo possível, mas não exatamente inteiro, porque pode ser que você tenha um programa em loop.