# Rest einer Zahl herausfinden



## Javalerner (11. Nov 2003)

Hallo,


ich habe eine Zahl mit einem Rest z.B. 12,1.
Jetzt suche ich eine Fuktion(?) wie ich den Rest rausbekomme und den dann in einer extra Variable speichert.
Ich hab nicht den gringsten ansatz wie das gehen soll.

Danke für die Hilfe!


----------



## Guest (11. Nov 2003)

Der Rest entsteht bei der Division zweier ganzahliger Werte. Der Modulo-Operator (%) gibt dir den Rest zurück.
Aber was du meinst ist wohl eher, dass du dir die Nachkommastellen geben lassen willst... wenn ich dich richtig verstanden hab´

Eine Möglichkeit schreib ich dir hier mal hin:

		// Konstruktor
		// Hierbei auf die Anführungszeichen achten
		// Sollten die Anführungszeichen vergessen werden, wird der falsche Konstruktor
		// aufgerufen Das würde zu Ungenauigkeiten führen auf Grund von Darstellungsschwierigkeiten
		// zwischen binär und 10er-System
		BigDecimal bd = new BigDecimal("12.2");

		// Teiler kannst du immer auf 1 lassen. Runden von Werten ist in der 
		// Klasse BigDecimal nur nach einer Division möglich
		BigDecimal teiler = new BigDecimal("1");

		// 1. Argument: durch was soll geteilt werden
		// 2. Argument wie genau soll gerundet werden. Hier 0, da wir alle Nachkommastellen
		//    abschneieden möchten
		// 3. Argument: es soll immer in Richtung null gerundet werden
		BigDecimal tmp = bd.divide(teiler, 0, BigDecimal.ROUND_DOWN);

		// Jetzt noch das ganze voneienader abziehen und du hast in result die Nachkommastellen stehen
		BigDecimal result = bd.subtract(tmp);

Ach ja, und nicht vergessen java.math.* zu importieren 

Eine weitere Möglichkeit wäre mit einer Bitmaske zu arbeiten.
Aber da ich nicht weiss wie lang die Mantisse von double Zahlen in der Binärdartellung ist, und ich auch keine Lust hab das jetzt nachzuschauen, hoffe ich, dass du mit dieser Lösung zufrieden bist.

Grüsse
Andres


----------



## mariopetr (12. Nov 2003)

versuche mal 
double rest=zahl-(long)zahl


----------



## Jiriki (12. Nov 2003)

double zahl = 12.1;
int nachkomma = (zahl * 10.0) % 10;

damit bekommst du die erste kommastelle
wenn du noch mehr haben willst einfach *100)%100 für 2 stellen *1000)%1000 für 3 stellen usw.


----------

