Verhältniss??

Uzi88

Mitglied
hallo, ich bin dabei ein code zu schreiben der die einkommensteuer ausrechnet, ich bin schon fast fertig nur stecke ich an einem punkt fest. Ich muss das verhältniss zwischen Einkommen und einkommensteuert prozentual ausrechen z.b. wie folgt:
http://puu.sh/5Kwf0.png

achja und wie mache ich das er mir das ergebniss gerundet geibt? also die einkommensteuer auf ganze zahl?

gibt es dafür einen befehl oder sonst was? wie mache ich das?

Java:
import java.util.Scanner;


public class Aufgabe41 {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		System.out.println("Einkommen?");
		
		double einkommen = scan.nextDouble();
		double y = einkommen -7834;
		double z = einkommen -13139;
	
				
				
		if(einkommen > 7835 && einkommen < 13139)
		{
			
			einkommen = (939.68 * (y/10000) +1400)*y/10000;
		}
		if(einkommen > 13140 && einkommen < 52551 )
		{
			einkommen = (228.74 * (z/10000) + 2397) * z/10000+1007;
		}
		if(einkommen > 52552 && einkommen < 250400)
		{
			einkommen = 0.42 * einkommen -8064;
		}
		if(einkommen > 250401 )
		{
			einkommen = 0.45 * einkommen -15576; 
		}
		System.out.println("Einkommensteuer: "+einkommen);
		
	}

}
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Ganzzahlen bekommst du indem du auf int castest

Code:
Int ganz = (int) 23.5 // = 23

falls du auch runden möchtest hilft dir vielleicht
Code:
math.round();

Code:
int i = (int) Math.round(23.5) ; // = 24

Prozentsatz :

Bsp:
Java:
public class Bar {
	
	final static int PROZENT = 100;
	
	Bar() {
		
		int Einkommen = 4000;
		
		int Steuersatz = 13;
		
		
		int Steuern = Einkommen / PROZENT * Steuersatz;
		
		System.out.println(Steuern + " €");
		
		
	}
	public static void main(String[] args) {
		new Bar();
	}
	
}

Ausgabe :

520 €

[TIPP]Die Prozentberechnung funktioniert natürlich auch mit Gleitpunktzahlen :)[/TIPP]
 
Zuletzt bearbeitet:

Uzi88

Mitglied
irgendwie verstehe ich das nicht so ganz mit den runden, ich will ja dass das ergebniss mir gerundet ausgegeben wird. Wie wo muss ich dann das Math.round() einsetzen?
 

kaoZ

Top Contributor
ok, nochmal ein Beispiel

Java:
	Bar() {
		
		double einkommen = 3265.43;
		
		System.out.println(Math.round(einkommen));  // rundet auf eine Ganzzahl
		
		System.out.println(String.format("%.1f", einkommen)); // Formatiert die Ausgabe auf das gewünschte Format
		
		System.out.println(Math.rint(einkommen)); // rundet bie 0.5 auf die nächst höhere Zahl
		
	}

Ausgabe
3265
3265.4 
3265.0

desweiteren gibt es noch eine Methode für Kaufmännisches runden
Code:
.rint()

Gerechtes Runden »rint()«

rint() ist mit round() vergleichbar, nur ist es im Gegensatz zu round() gerecht, was bedeutet, dass rint() bei 0,5 in Abhängigkeit davon, ob die benachbarte Zahl ungerade oder gerade ist, auf- oder abrundet:

Hier mal ein kleines Beispiel

System.out.println( Math.round(-1.5) ); // –1
System.out.println( Math.rint( –1.5) ); // –2.0
System.out.println( Math.round(-2.5) ); // –2
System.out.println( Math.rint( –2.5) ); // –2.0
System.out.println( Math.round( 1.5) ); // 2
System.out.println( Math.rint( 1.5) ); // 2.0
System.out.println( Math.round( 2.5) ); // 3
System.out.println( Math.rint( 2.5) ); // 2.0
Mit einem konsequenten Auf- oder Abrunden pflanzen sich natürlich auch Fehler ungeschickter fort als mit dieser 50/50-Strategie.

[TIPP]Wenn es dir nur um deine Ausgabe geht, solltest du dich mit der Formatierung auseinandersetzen, willst du jedoch die Zahlen weiterverarbeiten solltest du dich mit der Klasse
Code:
Math
und vorwiegend mit den Methoden
Code:
.round();
und
Code:
.rint();
befassen[/TIPP]
 
Zuletzt bearbeitet:

Uzi88

Mitglied
oh hier natürlich nochmal das endresultat :D

ich hab das mit ner anderen rundtechnik gemacht die mir durch wieder eingefallen ist :D

Java:
import java.text.DecimalFormat;
import java.util.Scanner;


public class Aufgabe41 {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		DecimalFormat df = new DecimalFormat(".000");
		
		System.out.println("Einkommen?");
		
		double einkommen = scan.nextDouble();
		double y = einkommen -7834;
		double z = einkommen -13139;
		double  steuer = 0; 

				
		if(einkommen > 7835 && einkommen < 13139)
		{
			
			steuer = (939.68 * (y/10000) +1400)*y/10000;
		}
		if(einkommen > 13140 && einkommen < 52551 )
		{
			steuer = (228.74 * (z/10000) + 2397) * z/10000+1007;
		}
		if(einkommen > 52552 && einkommen < 250400)
		{
			steuer = 0.42 * einkommen -8064;
		}
		if(einkommen > 250401 )
		{
			steuer = 0.45 * einkommen -15576; 

		}
		double steuersatz = (100*steuer)/einkommen;	


		System.out.println("Einkommensteuer: " +Math.round(steuer)+ "€");
		System.out.println("Steuersatz: " +df.format(steuersatz)+ "%");
		
	
		
	}
 

kaoZ

Top Contributor
:D

wobei

Java:
public class Bar {

	public Bar() {
		 DecimalFormat df = new DecimalFormat("#.###");
		 
		 System.out.println(df.format(23.456));
		 
		 // equivalent zu
		 
		 System.out.println(String.format("%.3f", 23.456));
	}

	public static void main(String[] args) {
		new Bar();
	}
	
}
Ausgabe :
23,456
23,456

ist, nur das du die Formatierung vorher festlegst und auch an anderer Stelle verwenden kannst , aber die lösungsvariante funktioniert natürlich auch ;)
 
Zuletzt bearbeitet:

Oben