Lógica - Casas decimais

Olá!

Minha pergunta é mais com relação à lógica do que à linguagem, propriamente…

Eu tenho um valor double e preciso transformar as casas decimais em int.
Por exemplo (53.25) = 0.25 = 20 e 5.
Estava fazendo assim:

int dezenaFrac = (int)((valor - (int)valor)*100);
int unidadeFrac = (int) ((valor - (int)valor - dezenaFrac)*100);

Mas, infelizmente, só funciona em casos como (0.20;0.40…), ou seja, em dezenas inteiras, não quando existem unidades (0.25;0.48…).

Alguém quer dar um palpite? :smiley:

P.s.: Lembrando que é um trabalho e ainda não tenho como usar classes ou métodos mais avançados, só a lógica pura e simples…

53.25 -> 0.25
0.25 -> 20 e 5
Bom: 53.25 - int (53.25) = 0.25
int (0.25 * 100) = 25
(25 / 10) * 10 = 20
25 % 10 = 5

Era isso mesmo… :shock:

Obrigada, thingol!

Nada que um pouco de contas não resolvam :stuck_out_tongue:

Eu estava usando a solução acima para implementar o meu código, porém estava tendo um probleminha: Em alguns casos, os números eram exibidos como se tivesse subtraído 1. Ou seja, a forma acima, embora seja correta matematicamente, pode gerar falta de precisão :cry: . Passei a usar essa fórmula e não tive mais problemas…

        double valor;
        int unidadeFrac = ((int)(valor * 100)%100)%10; 
        int dezenaFrac =((int)((valor * 100)%100)/10)*10;

P.s.: Essa é só uma forma de compartilhar uma experiência e tentar ajudar os que, como eu, também são iniciantes em Java e ainda sofrem um pouco por causa da lógica! :stuck_out_tongue: Ainda bem que temos o fórum!