Double in integer

Katsuro

Mitglied
Hi,

ich möchte eine double Zahl in eine Integer umrechnen.
Also ich will dass 175.432 zu 175 wird. das brauche ich damit ich den Wert auf 2 Nachkommastellen kürzen kann. und danach möchte ich dann das Integer wieder in ein double ändern und dann halt dadurch dass ich die Zahl durch 100 nehme auf 2 Nachkommastellen gekürzt haben.
Kann mir jemand sagen wie das geht? ich hab noch ganz verschwommen etwas mit
double = (int) 175.432 im Kopf, stimmt das?
 
Bis auf das, dass du dem double auch einen Namen geben musst schon.
Aber wenn du 175.432 intinisierst wird es zu 175(.0000000...). Wenn du es dann durch 100 dividierst, wird die Zahl 1.75. Ist das wirklich das, was du willst? ???:L
 
um auf 2 nachkommastellen zu kürzen musst du den double mit 100 multiplizieren, mit Math.round auf einen geraden int kürzen und dann wieder durch 100. dividieren. wichtig ist die division durch einen double, sonst wird das wieder ein int. alternativ kannst du natürlich den return von Math.round auch in einen double casten..
 
Wenn man runden will, dann muss man [c]Math.round()[/c] (wie von nrg vorgeschlagen) verwenden. Wenn man allerdings nur die Zahl "abschneiden" will, dann benötigt man so was:
Java:
double d = 123.45678;
d = (int) (d * 100.0) / 100.0; // ergibt 123.45, und nicht wie bei round() 123.46
 
So hier ein Beispiel:
Java:
	public static void main(String[] args) {
		double d1 = 1.75432;
		double d2 = 1.75999;
		double d = ((int) (d1 * 100.0)) / 100.0;
		System.out.println(d1 + " wird mit (int) zu " + d);

		d = Math.round(d1 * 100.0) / 100.0;
		System.out.println(d1 + " wird mit round zu " + d);

		d = ((int)(d2 * 100.0)) / 100.0;
		System.out.println(d2 + " wird mit (int) zu " + d);

		d = Math.round(d2 * 100.0) / 100.0;
		System.out.println(d2 + " wird mit round zu " + d);
	}

Code:
1.75432 wird mit (int) zu 1.75
1.75432 wird mit round zu 1.75
1.75999 wird mit (int) zu 1.75
1.75999 wird mit round zu 1.76
 
Ne, ich wil schon runden, kann mir jemand sagen wie genau ich jetzt 17,559 runden kann, an sich wollte ich genau das ergebniss haben mit dne zwei nachkommastellen was ich mit der ersten Methode auch raus bekam, aber jetzt brauche ich in meinem Programm doch leider nen gerundeten wert.

weil irgendwie bei 12-10.99 ein ergebniss von 1.0099999998 heraus kommt, ist doch irgendwie bescheuert.
 
das haben dir jetzt 3 leute geschrieben...

edit: und solche abweichungen kommen zustande, weil nicht jedes binäre ergebnis einer dezimalrechnung dezimal zu 100% dargestellt werden kann.
 
Double und Float haben nunmal eine eingeschränkte Genauigkeit.

Wenn es dir um die Ausgabe der Werte geht, dann schau dir doch mal PrintStream#printf oder die Klasse MessageFormat an.
 
Sorry die antworten kamen als ich schon am tippen der frage war.

aber es klappt immer noch nicht so ganz.


wenn ich mache:

Java:
        mwst = Math.round((1.815 * 100.0) / 100.0);
...


hat sich erledigt, hatte ne klammer zuviel. Ok, danke
 

Neue Themen


Zurück
Oben