www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Java" - Programm modifizieren
Programm modifizieren < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Programm modifizieren: Kommastellen
Status: (Frage) beantwortet Status 
Datum: 14:21 So 07.10.2007
Autor: Herby

Hallo,

ich hab nun eine Kontoabrechnung erstellt

[Dateianhang nicht öffentlich]


das klappt auch alles ganz gut, allerdings passiert hier bei der Eingabe

meinKonto.zahleAus(300.256)

sowas:

[Dateianhang nicht öffentlich]


Meine Fragen sind daher:

1. Wie kann ich das Ergebnis auf zwei Stellen runden lassen?

2. Was muss ich programmieren, dass nur ein Wert mit zwei Stellen hinter dem Komma eingegeben werden darf?


Liebe Grüße
Herby

Dateianhänge:
Anhang Nr. 1 (Typ: JPG) [nicht öffentlich]
Anhang Nr. 2 (Typ: JPG) [nicht öffentlich]
        
Bezug
Programm modifizieren: Antwort
Status: (Antwort) fertig Status 
Datum: 16:40 So 07.10.2007
Autor: piet.t

Hallo,

tja, das ist das alte Problem, dass bei den java-Gleitkommatypen die Zahlen binär gespeichert werden und es daher bei Zahlen, die im Dezimalsystem exakt dargestellt werden können leicht irgendwelche Rundungfehler auftauchen.
Zu Deinen Fragen:

>
> Meine Fragen sind daher:
>  
> 1. Wie kann ich das Ergebnis auf zwei Stellen runden
> lassen?

Einen wirklich schönen Weg gibt es da nicht, das einfachste ist wohl etwas in der Art von
1: value = Math.round(value*100d)/100d;

Beachte aber, dass auch wenn Du irgendwelche Zwischenwerte rundest noch nicht sichergestellt ist, dass dann auch das Ergebnis sauber gerundet ist...

>  
> 2. Was muss ich programmieren, dass nur ein Wert mit zwei
> Stellen hinter dem Komma eingegeben werden darf?

Hier sollten die Methoden in Deiner Konto-Klasse prüfen, ob der übergebene Wert ein korrektes Format hat, etwa so:
1: if(value - Math.round(value*100d)/100d != 0){
2: throw new IllegalArgumentException();
3: }

Oder besser (da Abfragen auf == 0 bei Gelitkommafeldern wegen Rundungsdifferenzen  immer kritisch sind) etwas in der Art:
1: if(Math.abs(value - Math.round(value*100d)/100d)>1E-10) {
2: throw new IllegalArgumentException();
3: }


Alternativ kannst Du natürlich auch versuchen, Deine Betragsfelder nicht als double sondern als BigDecimal zu deklarieren - damit geht man einigen Problemen von vorneherein aus dem Weg, allerdings kostet das auch einiges an Performance.

Gruß

piet


>  
>
> Liebe Grüße
>  Herby


Bezug
                
Bezug
Programm modifizieren: thx
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:17 Mo 08.10.2007
Autor: Herby

Hallo Piet,

vielen Dank - funktioniert alles [ok]


lg
Herby

Bezug
        
Bezug
Programm modifizieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:47 Mi 10.10.2007
Autor: tha_specializt

sehr amüsant zu sehen, dass eine ehemalige Klausur von mir anscheinend populär ist :-).

Nun eine kleine Frage: Was hat ein Naturwissenschafts-Student mit Programmiersprachen am Hut? (reine Interessensfrage)

Bezug
                
Bezug
Programm modifizieren: Infos
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:13 Mi 10.10.2007
Autor: Herby

Hi Daniel,

der naturwissenschaftliche Student studiert so'n Mix aus Mechanik - Elektronik und Informatik ==> Mechatronik und da ist nun mal das Programmieren ein Pflichtprogramm (Java, Assembler, VHDL, SPS)

Das Beispiel stammt übrigens aus dem Buch "Grundkurs JAVA" von Dietmar Abts (Kapitel 3 in der 4. Aufl.) - is doch cool, wenn aus so Schmökern Klausuraufgaben entstehen, dann kann man wenigstens hinterher mal nachlesen, was man vorher falsch gemacht hat :-)


Liebe Grüße
Herby

Bezug
        
Bezug
Programm modifizieren: Antwort
Status: (Antwort) fertig Status 
Datum: 22:49 Mi 10.10.2007
Autor: Marc

Hallo Herby,

> 1. Wie kann ich das Ergebnis auf zwei Stellen runden
> lassen?

Ich kenne mich mit Java nicht aus, interessant fand ich aber das:
[]http://www.torsten-horn.de/techdocs/java-basics.htm#FormatierungRundung

Monetäre Beträge würde ich vielleicht als Integer speichern, und den Zugriff darauf über eine Klasse vereinfachen.
Dafür sollte es aber bereits Bibliotheken geben...

> 2. Was muss ich programmieren, dass nur ein Wert mit zwei
> Stellen hinter dem Komma eingegeben werden darf?

Zum Beispiel die Eingabe als String einlesen und dann auf Fehler überprüfen.

Viele Grüße,
Marc

Bezug
                
Bezug
Programm modifizieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:13 Mi 10.10.2007
Autor: tha_specializt


> Zum Beispiel die Eingabe als String einlesen und dann auf
> Fehler überprüfen.

Das wäre nicht so gut, weil man dann aucb Buchstaben eingeben kann, und die Einbeziehung von Strings in die Überprüfung nur unnötig umständlich wäre. Stattdessen kann man auch ganz einfach die Anzahl der Stellen zählen lassen. Soll es bereits bei der Eingabe geschehen, so ist []das hier geradezu prädestiniert für solch eine Aufgabe.

Ich liebe Java ... :-)


Bezug
                        
Bezug
Programm modifizieren: na dann...
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:22 Mi 10.10.2007
Autor: Herby

Ähm,

bist du da sicher:

>  
> Ich liebe Java ... :-)
>  

na ja, dann halte die nächsten zwei Wochen mal durch, ich habe da noch nicht so den Durchblick und deinen Namen merke ich mir [grins]


lg
Herby

Bezug
                        
Bezug
Programm modifizieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:31 Mi 10.10.2007
Autor: Marc

Hallo tha_specializt,

> > Zum Beispiel die Eingabe als String einlesen und dann auf
> > Fehler überprüfen.
>  
> Das wäre nicht so gut, weil man dann aucb Buchstaben
> eingeben kann, und die Einbeziehung von Strings in die
> Überprüfung nur unnötig umständlich wäre. Stattdessen kann
> man auch ganz einfach die Anzahl der Stellen zählen lassen.
> Soll es bereits bei der Eingabe geschehen, so ist
> []das hier
> geradezu prädestiniert für solch eine Aufgabe.

Das stimmt. Allerdings hat das (in seiner puren Anwendung) auch Nachteile, z.B. Unverständnis beim User, warum das Zeichen nicht erscheint/angenommen wird.

> Ich liebe Java ... :-)

Dann kann ich Dich ja mal fragen: Gibt es auch Java-Programme, die (inklusive dem ganzen Java-Interpreter) nicht mit 100MiB oder sogar mehr im Hauptspeicher liegen? Ich bin jedes Mal entsetzt, wenn mein Browser die Java-VM hochfährt. In diesen Augenblicken kann ich die allgemeine Begeisterung für Java nicht nachvollziehen...

Viele Grüße,
Marc


Bezug
                                
Bezug
Programm modifizieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:11 Do 11.10.2007
Autor: tha_specializt


> Dann kann ich Dich ja mal fragen: Gibt es auch
> Java-Programme, die (inklusive dem ganzen Java-Interpreter)
> nicht mit 100MiB oder sogar mehr im Hauptspeicher liegen?
> Ich bin jedes Mal entsetzt, wenn mein Browser die Java-VM
> hochfährt. In diesen Augenblicken kann ich die allgemeine
> Begeisterung für Java nicht nachvollziehen...

Java hat leider einen langen Schwanz, der allerdings eine grosse Kompatibilität ermöglicht. Die Basisklassen einer JRE sind eben recht umfangreich, allerdings kann man damit theoretisch sogar 3D-Anwendungen erzeugen. Bei der Entwicklung dieser modernen, objektorientierten Sprache wurde eben auf Rapid Development und Kompatibilität großen Wert gelegt, diese beiden Sachen lassen sich nicht ganz kostenlos vereinen o.0.

Derzeit sind mir keine Distributionen bekannt, die spürbar weniger Ressourcen fressen (ausser Java ME, aber das is ja nur für _sehr_ kleine Anwendungen interessant) ... muss man eben hinnehmen. Moderne Spiele werden immer grösser, moderne Programme werden immer grösser und so auch die Sprachen. Das ist auch das Haupt-Gegenargument an C oder C++ --> is einfach veraltet, selbst wenn man mit einigen Kniffen nahezu alle Vorteile von Java-ähnlichen Sprachen erreichen kann, so ist dies nie wirklich das gelbe vom Ei.

Nicht umsonst setzen schon die ersten großen Entwickler auf das neue Prinzip, es ist eben einfach Zeit für einen Wechsel, immerhin hat sich die Systemarchitektur seit dem ersten C deutlich weiterentwickelt, moderne Versionen sind (leider muss man das sagen) nur noch Flickenteppiche. (auch wenn sie immernoch sehr gut funktionieren, ein repariertes Auto mit neuem Kat läuft doch auch super! Ich verneige mich vor den altehrwürdigen C'lern, deren Werke waren/sind fantastisch.)

Wie gesagt: Java ME wäre evtl. mal einen Test wert, aber da wirst du eher AUFstocken müssen um deine Bedingungen zu erfüllen

Und um es schonmal vorweg zu nehmen:
Frage:
"Warum kann ich mit den Scheiss hier keine exe-dateien erzeugen????"

Antwort:
"Kannst du, solche Dateien heissen hier eben jar, sind gepackt und benötigen (leider) immernoch eine JRE zum starten ... aber eine exe-datei benötigt auch einen Interpreter, dieser ist sinnigerweise in Windows integriert, die nächste Windows-Version hat evtl. auch einen Java-Interpreter (sagt man)"


Bezug
                                
Bezug
Programm modifizieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:34 Do 11.10.2007
Autor: tha_specializt


> Allerdings hat das (in seiner puren Anwendung)
> auch Nachteile, z.B. Unverständnis beim User, warum das
> Zeichen nicht erscheint/angenommen wird.

Man wird doch über die Verweigerung informiert ... schalt eben mal deine Computerboxen an ;-)
Also das kenne ich auch aus jeder anderen Sprache --> gewünschte Aktion unmöglich == "PINNG!"


Bezug
                
Bezug
Programm modifizieren: lesen, lesen, lesen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:17 Mi 10.10.2007
Autor: Herby

Hallo Marc,

die Sachen stehen im meinem Buch auch alle drin, ich war nur noch nicht soweit mit dem Lesen :-)

Ich habe das DecimalFormat mal nachprogrammiert - klappt auch gut.

Schönen Abend noch

Liebe Grüße
Herby

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de