Pergunta

Estou procurando fazer o seguinte: Digamos que eu tenha um número como 125.625 => Gostaria de poder dizer ao meu programa que é 1 * 100 + 2 * 10 + 5 * 1 + 0,625. Como eu poderia fazer isso, por favor?

obrigado

Foi útil?

Solução

Se você tem seu número como um número inteiro, poderá fazer algo assim:

value := 125.625
fractional part := value % 1
value := floor(value)

exponent = 1
listofvaluepairs = array()
while(value > 0)
{
  tmp_part := value % 10
  listofvaluepairs.add(value, exponent)
  exponent = exponent * 10
  value = floor(value / 10)
}

O Psuedocode acima preencherá a lista de valores de valores com pares do dígito e o número para multiplicar. Então você entenderia isso:

{{1,100}, {2,10}, {5,1}}

E a parte fracionária tem a última peça que você queria.

Para referência, a função piso () fornecerá o número sem a parte fracionária, então o piso (1.6) fornece 1. o % (Modulo) Operador mais ou menos dará o restante após a divisão. Então 7%2 = 1.

O que eu faço no exemplo acima (que é muito não Código Java), é um dígito de cada vez a partir do valor.

Então eu começo com 125:

125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12

Depois, repito para obter 2 e 1. Ao mesmo tempo estou economizando 1, 10 e 100 usando a variável de expoente.

Outras dicas

double num = 125.625;
System.out.print(num - (int)num);
num = (int) num;

for (int i=10; num!=0; i*=10) {
    System.out.print(" + " + i/10 + " * " + (num % i)/i*10);
    num -= num % i;
}

Imprimirá:

0.625 + 1 * 5.0 + 10 * 2.0 + 100 * 1.0

É claro que você pode alterar o código para adicionar coisas a uma estrutura de dados.

Você pode obter cada dígito usando o módulo ou % operador em um loop para os valores inteiros (ou seja: int ones = myVal % 10), e para obter o valor fracionário float fraction = val - (int)val;

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top