runden

Status
Nicht offen für weitere Antworten.

mermen

Aktives Mitglied
sorry, wenn ich fürs "runden" schon wieder einen thread eröffne...aber ich möchte ganz speziell nur dieses problem gelöst haben....hab schon gesucht, aber genau diesen fall nicht wirklich gefunden....


kann mir einer sagen, warum diese rundung nicht aufgeht???

float neuprozent = (int)((((1000*richtigZaehler)/insgesamt)+0.5)/10);

ich möchte eine stelle hinter dem komma kaufmännisch gerundet haben...

also:

27,22 = 27,2
55,54 = 55,5

27,27 = 27,3
55,55 = 55,6
 
öh - du castest deine Zahl nach int... da ist dann nichts mehr mit stellen hinterm komma....
 
entschuldigt bitte...die zeile sollte so aussehen!!!

float neuprozent = ((int)(((1000*richtigZaehler)/insgesamt)+0.5))/10;
 
der integer befehl kommt doch erst bei der z.b.:dreistelliegen ganzzahl

wenn richtigzaehler = 3
und
insgesamt = 11

dann müßte doch:

1000*3/11 = 272.727272.... +0.5 = 273,22727272....

dann der integer-befehl also 273.0 !
und dann 273 / 10 = 27.3

oder habe ich einen denkfehler!???
 
hm, wieso nicht sowas in der Art:

Code:
float richtigzaehler = 3;
float insgesamt = 11;
				
float xRounded = Math.round(richtigzaehler/insgesamt * 1000)/10f;

System.out.println(xRounded);

deine Variante müsste sicher noch ein f hinterm 10 haben, für float
Code:
float neuprozent = (int)((((1000*richtigzaehler)/insgesamt)+0.5))/10f;
 
was bedeutet denn das f am ende!??...

ich habs probiert...aber klappt leider immer noch nicht....

danke für den lösungsansatz...aber die variablen richtigZaehler und insgesamt sind beides integer....aus einer anderen klasse!
möchte sie auch nicht unbedingt ändern!!!

bitte helft mir...ich hänge schon echt lange an diesem teil....
 
ich weiss net, was du erreichen willst? z.b 0.955 in Porzent auf 10tel % genau darstellen? also 95.5% ?

Das f steht für float und teilt dem Compiler mit, dass es sich um eine Division zweier float zahlen handelt..

indem Fall castest halt deine int zu float
Code:
int richtigzaehler = 3;
int insgesamt = 11;
				
float neuprozent = Math.round((1000 * (float)richtigzaehler)/insgesamt)/10f;

System.out.println(neuprozent);
 
hey, cool!...es klappt!!

ich möchte sie deswegen nicht "floaten" weil ich sie als integer hintereinander ausgeben möchte...bei einer float variablen wäre da ja eine ".0" am ende der zahl, falls es eine ganzzahl ist!!

kannst du mir bitte nochmal sagen, wonach ich suchen muß, wenn ich über die funktion (float) in der mitte der rechnung etwas nachlesen möchte....!?...

casten!?...
 
Das (float) ist ein sogenannter Cast. Findest du in jedem Javabuch. Wenn du die Zahlen generell als int zurückgegeben bekämst, wäre ja Sense mit Nachkommastellen... (int == GANZZAHL)
Wirst du also schon selbst nachschauen müssen, ob deine float auf .0 endet, und in dem Fall casten; in etwa so (ungetestet):

Code:
if(floatZahl / (int) floatZahl == 1.0) {
    neuProzent = (int) floatZahl;
}

wobei du dann natürlich ein Problem mit den Datentypen kriegst... Naja, könntest ja auf Wrapper-Objekte umsteigen und neuprozent vom Typ Number machen...

mpG
Tobias
 
danke tobias...aber die lösung von lin genügt mir schon!

aber danke dir für den hinweis mit dem cast !! werde mir das mal genauer anschauen!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben