www.mikrocontroller.net

Forum: PC-Programmierung Java Frage!! (Hiiiilfe)


Autor: Nina Voelkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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

Hier nochmal was in deutsch
http://www.galileocomputing.de/openbook/javainsel3...

Gruß

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus: Kommt aufs selbe raus.

Autor: Nina Voelkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank für Eure tatkräftige unterstützung!
Da mangelte es wohl an der mathematischen Vorstellungskraft!

Habe das Projekt nun erfolgreich abgeschlossen.
Vielen Dank an Alle!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.