Question

Je cherche à faire ce qui suit: Disons que j'ai un certain nombre comme 125,625 => Je voudrais pouvoir dire à mon programme qui est 1 * 100 + 2 * 10 + 5 * 1 + 0,625. Comment pourrais-je faire s'il vous plaît?

Merci

Était-ce utile?

La solution

Si vous avez votre numéro comme un entier, vous pouvez faire quelque chose comme ceci:

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

Le psuedocode ci-dessus va remplir les listofvaluepairs avec des paires de chiffres et le nombre de multiplier par. Donc, vous obtiendrez ceci:

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

Et la partie fractionnaire a cette dernière pièce que vous vouliez.

Pour référence, le plancher fonction () donnera le numéro sans la partie décimale, donc plancher (1,6) donne 1. Le % (modulo) opérateur plus ou moins donner le reste après la division. Donc, 7% 2 = 1.

Ce que je fais dans l'exemple ci-dessus (ce qui est très bien pas code java), est obtenir un chiffre à la fois de la valeur.

Alors je commence par 125:

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

Alors je le répète pour obtenir 2 et 1. En même temps, j'économise 1, 10 et 100 en utilisant la variable d'exposant.

Autres conseils

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

affichera:

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

Bien sûr, vous pouvez modifier le code pour ajouter des choses à une structure de données.

Vous pouvez obtenir chaque chiffre en utilisant l'opérateur modulo ou % dans une boucle pour les valeurs entières (i.e. .: int ones = myVal % 10) et pour obtenir la valeur fractionnelle faire float fraction = val - (int)val;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top