Java Frage!! (Hiiiilfe)

Gast #201092
Lesenswert?

Hallo,
ich habe ein großes Problem. Ich schreibe gerade eine Semsterarbeit,
aber nun hänge ich fest. Ich habe eine Problem mit einem Integer, bzw.
soll dies einer werden. Sein Wert beträgt z.B. 333 (mm). Dann muss ich
diesen auf cm umrechen also durch 10 teilen, dann hätte ich 33,3 (ist
das noch ein Integer?), dann soll dieser Wert immer auf volle 5er oder
auf eine volle 0 aufgerundet werden. Also hier auf 35. Bei einem Wert
von 35,7 dann z.B. auf 40. Ich hoffe Ihr versteht, was ich meine.
Wäre echt klasse, wenn jemand Hilfe weiß, bin da nicht so begabt.

Vielen Dank!!!
Nina
Gast #201093
Lesenswert?

Hi

Ich glaube, ich verstehe dein Problem.

Lösungsvorschlag:

int convert(int value){
  return (value + 5) / 10
}

Der Methode wird also das Argument "value" (=Wert) übergeben. Es ist
eine Variable vom Typ Integer, also eine Ganzzahl. Zu diesem Wert wird
5 dazugerechnet und das ganze dann durch 10 dividiert. Da es sich um
eine Integer-Division handelt (Da der Dividend ein Integer ist,
interpretiert  Java die Division als Integer-Division.) wird alles
hinter dem Komma einfach abgeschnitten.

Beispiele:

value := 37
value + 5 = 42
42 / 10 = 4

value := 33
value + 5 = 37
37 / 10 = 30

Hoffentlich hat's geholfen ;-)

Gruss

Michael
Gast #201094
Lesenswert?

Schau mal in die Java-Referenz...

uuund zwar wenn ich mich nicht irre in die java.math.*

Es müsste eine Funktion zum runden existieren.

 java.lang.Object
 |
 +--extended by java.lang.Number
    |
    +--extended by java.math.BigDecimal


http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html

Funktionen: ceil(), floor(), round() und rint().

Hier nochmal was in deutsch
http://www.galileocomputing.de/openbook/javainsel3/javainsel_050001.htm#Rxxjavainsel_050001280RundenvonWerten

Gruß
Gast #201095
Lesenswert?

Integers sind nur ganze Zahlen, deswegen solltest du floats/doubles
nehmen.

int wert_in_mm = 333;
double wert_in_cm = ((double)wert_in_mm)/10.0;

So bist du auf der sicheren Seite. Wandelst du einen double in int,
werden wie oben gesagt die Nachkommastellen abgeschnitten. Um zu
runden, musst du also vorher 0.5 addieren:

int wert = (int)(wert_in_cm + 0.5);

Immer wenn (int) oder (double) da steht, wird hier eine Typumwandlung
vorgenommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren