Wie eine Reihe in verschiedene Teile in Java brechen?
-
26-09-2019 - |
Frage
Ich suche folgendes zu tun: Lassen Sie uns sagen, ich habe eine Zahl wie 125,625 => Ich möchte in der Lage sein, mein Programm zu sagen, dass 1 * 100 + 2 * 10 + 5 * 1 + 0,625. Wie könnte ich das bitte tun?
Dank
Lösung
Wenn Sie Ihre Nummer als Integer haben, können Sie so etwas tun könnte:
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)
}
Das oben gezeigte psuedocode wird die listofvaluepairs mit Paaren der Ziffer und die Zahl zu multiplizieren füllen. So können Sie diese bekommen würde:
{{1,100}, {2,10}, {5,1}}
Und der Bruchteil hat das letzte Stück, das Sie wollten.
Als Referenz wird der Boden () gibt die Nummer ohne den Bruchteil geben, so Boden (1.6) ergibt 1. Die % (Modulo) Operator wird mehr oder weniger den Rest nach der Teilung geben. So 7% 2 = 1.
Was ich in dem obigen Beispiel zu tun (was sehr viel ist nicht Java-Code), ist eine Ziffer zu einer Zeit von dem Wert erhalten.
Also habe ich mit 125 beginnen:
125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12
Dann wiederhole ich 2 und 1. Zur gleichen Zeit bekommen spare ich 1, 10 und 100 die Exponenten Variable.
Andere Tipps
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;
}
Wird drucken:
0.625 + 1 * 5.0 + 10 * 2.0 + 100 * 1.0
Natürlich können Sie den Code ändern Sachen auf eine Datenstruktur hinzuzufügen.
Sie können jede Stelle erhalten, indem die Modulo oder %
Operator in einer Schleife für den Integer-Wert mit (d.h .: int ones = myVal % 10
) und den Bruchwert zu erhalten tun float fraction = val - (int)val;