# Zahl auf 2 nachkomma stellen runden



## hans-sonny (21. Apr 2011)

hi leute

ich habe zwei zahlen

double einkommensseteuer = 0,0;
double einkommen = 8005;

dann möchte ich rechnen und das ergebnis auf zwei nachkomma stellen runden


einkommenssteuer = (Math.round(((912.17 * einkommen + 1400.0) * einkommen)/0.01)*0.01);


und dann in einem jframe ausgeben


.... 

rechnung ausgabe alles okay

nur es runden nicht


----------



## SlaterB (21. Apr 2011)

> nur es runden nicht 

wie stellst du das fest? was erhälst du als Ausgabe, wie sähe das deiner Meinung nach gerundet aus?


----------



## AmunRa (21. Apr 2011)

```
double f = 0.23531233;
String ausgabe= String.format("%.2f",f);
System.out.println(ausgabe);
```


----------



## hans-sonny (21. Apr 2011)

als ausgabe bekomme ich 5.846308340425E10


----------



## SlaterB (21. Apr 2011)

damit hast du nicht alle meine Fragen beantwortet 
ich könnte jetzt einfach nur sagen, das ist gerundet, oder wieso deiner Meinung nach nicht?

damit es bisschen vorangeht versuche mal als Ausgabe auch


```
import java.text.DecimalFormat;
System.out.println(new DecimalFormat("0.00000").format(einkommenssteuer));
```

bzw. teste mit 
[c]double einkommen = 85;[/c]


----------



## hans-sonny (21. Apr 2011)

einkommen 85 geht nicht weil das ist unter der freigrenze da wird gleich was anderes gemacht

ja ich möchte halt eine vernünftige gleitkomma zahl^^ 

und ich gib aber nicht in die standardausgabe sondern in ein textfeld aus


----------



## SlaterB (21. Apr 2011)

also worauf ich hinaus wollte ist, dass 5.846308340425E10 so viele Ziffern hat, weil das 58 Milliarden 463 Millionen usw. sind 
da nützt das runden auf die zweite Nachkommastelle nicht viel, obwohl das hier auch funktioniert, die 25 am Ende sind die Cent,

deine Rechnung stimmt also nicht


----------



## AmunRa (21. Apr 2011)

```
double f = 0.23531233;
String ausgabe= String.format("%.2f",f);
textFeld.setText(ausgabe);
```


----------



## hans-sonny (21. Apr 2011)

SlaterB hat gesagt.:


> also worauf ich hinaus wollte ist, dass 5.846308340425E10 so viele Ziffern hat, weil das 58 Milliarden 463 Millionen usw. sind
> da nützt das runden auf die zweite Nachkommastelle nicht viel, obwohl das hier auch funktioniert, die 25 am Ende sind die Cent,
> 
> deine Rechnung stimmt also nicht


ja das glaube ich auch ^^

also ich hab folgende angabe:

die tarifliche einkommenssteuer bemisst sich nach dem zu versteuernden Einkommen. sie beträgt .. für zu versteuernde einkommen.

bis 8004€ = 0
von 8005 - 13469€ (912,17 * y + 1400) * y;

y ist ein Zehntausendstel des 8004€ übersteigenden Teils des auf einen vollen Euro-Betrag abgerundeten zu versteuernden Einkommens.
der sich ergebende steuerbetrag ist auf den nächsten vollen euro betrag abzurunden


also dass y != einkommen ist hab ich schon gecheckt^^ ... (das programm ist für meine freundin und die hat da schon bisschen was gemacht aber wohl eher schlecht als recht)

was würde y denn entsprechen?



würde das denn so stimmen:


```
zuversteuern = (einkommen - 8004)/10000;
        einkommenssteuer = zuversteuern;
        einkommenssteuer = (Math.round(((912.17 * zuversteuern + 1400.0) * zuversteuern)/0.01)*0.01);
```


----------



## SlaterB (21. Apr 2011)

was ist y? y ist ein Zehntausendstel des 8004€ übersteigenden Teils des [..] Einkommens.

zu schwer? wie wärs mit z
z ist der 8004€ übersteigenden Teils des [..] Einkommens.

kannst du z ausrechnen? für einkommen = 10042 Euro?


----------



## hans-sonny (21. Apr 2011)

so oder wie?


```
zuversteuern = (einkommen - 8004)/10000;
        einkommenssteuer = zuversteuern;
        einkommenssteuer = (Math.round(((912.17 * zuversteuern + 1400.0) * zuversteuern)/0.01)*0.01);
```


----------



## SlaterB (21. Apr 2011)

sieht für mich soweit richtig aus, abgesehen davon dass jetzt Teile wie "des auf einen vollen Euro-Betrag abgerundeten Einkommens" noch nicht unbedingt umgesetzt sind,
würde ich in jedem Fall mit irgendwelchen öffentlichen Tools abgleichen..

und die Rundung solltest du generell nicht in die Rechung einbauen:
einkommenssteuer = (912.17 * zuversteuern + 1400.0) * zuversteuern;
einkommenssteuer = rundeAufZweiStellen(einkommenssteuer);

mit einer entsprechenden Untermethode


----------



## hans-sonny (21. Apr 2011)

ja könnte ich machen aber das will meine freundin nicht das hatten die in der schule noch nicht ... desswegen mal lieber nicht 

also müsste ich den zu versteuernden betrag nicht auf zwei nachkomma stellen runden sondern auf eine gaze zahl oder?
aber wie kann ich abrunden?


----------



## SlaterB (21. Apr 2011)

z.B. 'java abrunden' in Suchmaschinen eintippen
oder auch die schon verwendete Math-Klasse nach weiteren Methoden durchschauen


----------

