www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

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
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaProgramm modifizieren
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
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.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]