Pregunta

Estoy buscando para hacer lo siguiente: Digamos que tengo un número como 125.625 => Me gustaría ser capaz de decirle a mi programa que es de 1 * 100 * 10 + 2 + 5 * 1 + 0,625. ¿Cómo podría hacer eso por favor?

gracias

¿Fue útil?

Solución

Si usted tiene su número como un entero, se podría hacer algo como esto:

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)
}

El psuedocode anteriormente llenará el listofvaluepairs con pares de la dígitos y el número de multiplicar por. Así se obtendría la siguiente:

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

Y la parte fraccionaria tiene la última pieza que quería.

Para referencia, la función floor () dará el número sin la parte fraccional, por lo piso (1.6) da 1. La % (módulo) operador será más o menos dar el resto después de la división. Así 7% 2 = 1.

Lo que hago en el ejemplo anterior (que es en gran medida no código de Java), es conseguir uno dígito a la vez a partir del valor.

Así que empiezo con 125:

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

A continuación, repito para obtener 2 y 1. Al mismo tiempo estoy ahorrando 1, 10 y 100 utilizando la variable exponente.

Otros consejos

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

Por supuesto, puede cambiar el código para agregar material a una estructura de datos.

Se puede obtener cada dígito utilizando el operador de módulo o % en un bucle para los valores enteros (es decir .: int ones = myVal % 10), y para obtener el valor fraccional hacer float fraction = val - (int)val;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top