aus 3.26 3 und 0.26 machen

Status
Nicht offen für weitere Antworten.

SmellyCat

Mitglied
Hallo Leute,

ich bin ein rechter Newbie was Java betrifft und tippe ein wenig vor mich hin.

Letztens bin ich vom Kieselstein zum Berg gekommen:

Eigentlich wollte ich ein Berechnungsprogramm für den *räusper* weibl. Zyklus erstellen (jaja ;-) war eigentlich eher als Witz gedacht) aber ich stieß auf ein Problem: Wie eine konfortable Datumseingabe gestallten und ich kam darauf man könne das ganze als Kommazahl eingeben, also 12.07 für den 12 Juli usw.

Nun, von diesem Problem aus stieß ich auf ein neues: um die Eingabe verarbeiten zu können muss ich in die Ziffern vor und die nach dem Komma trennen können... gesagt getan, Kopf hat gequalmt und ich kam auf folgendes:

Code:
double a, b, c, d, e;

a = 3.26;
		
// Alibiwerte, da sein könnte dass b, c und d keinen Wert besitzen (lt. Java)
b = 1;
c = a; 
d = 1	

while (c > 1){
	c = a/b;
	d = b;
	b++;
}

d--;		
e = a - d; // Problem!!!

soooo... eigentlich sollte es funktionieren (tut es auch) nur bei der letzten Zeile tritt ein Problem auf:
Als Bsp: a = 3.26 und die Ausgabe von e lautet "0.2599999999999998" - ähhhhm, ja, er scheint eine klitzekleine Ungenauigkeit in 0.0'Periode'1 zu haben. Ich kann das Problem so halbwegs umgehen in dem ich z. B. a und d zuvor mit 1000 multipliziere und danach e durch 1000 dividiere, oder ich könnte runden... alles in allem, eine halbe Lösung aber eine für die Auswirkung, ich wüsst aber gern die Ursache.

Es gibt sicher besser Möglichkeiten um a) eine Datumseingabe zu machen und b) eine Zahl in Vor- und Nachkommawerte aufzuteilen, aber was mich fuchst ist eben dass die Doubleverrechnung eine Ungenauigkeit hat.

Weiß jemand wieso, liegt der Fehler bei mir oder ist das normal?

Danke & Grüße
Mats

PS: statt Double eine Float = gleiches Problem
 

bummerland

Top Contributor
wieso parst du die Eingabe nicht als String? kannst doch dann prima beim punkt aufplitten.
Code:
String datum = "12.07.2006";
String[] arr = datum.split("\.");
 

byte

Top Contributor
Das liegt an der Ungenauigkeit von binären Dezimalzahlen (Java rechnet intern im Binärsystem). Du kannst das Problem mit NumberFormat oder DecimalFormat umgehen. Siehe API bzw. einfach mal Forensuche benutzen. Das Thema wurde schon x-mal behandelt.

Du kannst das btw. auch einfacher lösen:

Code:
double a = 3.26;
int b = (int)a;
double c = a-b;
 

SmellyCat

Mitglied
Hallo,

thx für die Aws

@byto: Das mit dem case-Operator ist im Org auch drinn, Ungenauigkeit bleibt aber ;) hab das Programm zum posten ein wenig zusammengestutz

Gesucht habe ich, wusste aber nicht so ganz genau wonach...

@bummerland: thx für die Idee (hätt ich gleich von Anfang an drauf kommen sollen...) nur es hat mich genervt nicht zu wissen was da abgeht und man sucht den Fehler halt doch eher bei sich als beim Programm bzw. der Sprache, daher habe ich mich darauf versteift und wollte wissen woran es liegt ;)

Danke
Mats
 

SmellyCat

Mitglied
Hallo nochmals,

eine kleine "Newbiefrage" - der Splittbefehl... ähm, mit \t oder einem Zeichen
Code:
String[] arr = datum.split("0");
klappt es aber mit
Code:
String[] arr = datum.split("\.");
bekomme ich ne Meldung dass der Ausdruck \. unzulässig ware (eben nur \t, \n etc.)

Weiß jemand rat?

thx
Mats
 

Illuvatar

Top Contributor
Der Punkt braucht natürlich eine maskierung, da das ein Regex ist. Allerdings muss das \ aus dem Regex wieder maskiert werden, demnach wäre \\. richtig.
 

norman

Top Contributor
ja, wie illuvatar berichtigt hat, muss es heißen:
Code:
datum.split("\\.");
 

SmellyCat

Mitglied
genau ;-) hatte das Brwoser-Fenster seit xx Uhr offen und jetzt erst die Aw losgelassen (Stress im Büro) und die neueren Posts waren nicht meinem Screen... als ich das aber sah wollte ich das Posting löschen... ging nicht also den Edit und jetzt haben sich Dein und mein Posting überschnitten ;-)

thx
Mats
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Collections Wörterbuch machen Java Basics - Anfänger-Themen 4
G JTable setModel(myModel) ok -> wie wieder unset machen? Java Basics - Anfänger-Themen 8
H Generics machen mich verrückt Java Basics - Anfänger-Themen 8
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Java-Code abwärtskompatibel machen Java Basics - Anfänger-Themen 4
B Screenshots machen und zwar viele und speichern Java Basics - Anfänger-Themen 12
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
H Array Slot frei machen Java Basics - Anfänger-Themen 3
H Array Slot frei machen Java Basics - Anfänger-Themen 4
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
F Aufgabenstellung genauer formulieren/verständlicher machen? Java Basics - Anfänger-Themen 10
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
F Aus geraden eine Kurve machen Java Basics - Anfänger-Themen 6
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
T Wie weiter machen? Java Basics - Anfänger-Themen 9
G Erste Schritte Fehler ausfindig machen Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
DaCrazyJavaExpert JScollPane scrollbar unsichtbar machen Java Basics - Anfänger-Themen 2
P Aus einem Array zwei Arrays machen Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
B Unique ID nochmal Unique machen Java Basics - Anfänger-Themen 20
S JLabel sichtbar machen/GUI Java Basics - Anfänger-Themen 3
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
W Wie kann man zufällige Anordnungen machen? Java Basics - Anfänger-Themen 1
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
D Objekt Transparenter machen Java Basics - Anfänger-Themen 1
S OOP Frage: Methoden nur bei bestimmten Gegebenheiten aufrufbar machen? Java Basics - Anfänger-Themen 4
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
S BufferedImage heller/dunkler machen mit RescaleOp Java Basics - Anfänger-Themen 2
I OOP Wie kann ich diesen Code 'Objektorientiert machen' ? Java Basics - Anfänger-Themen 1
C Mit Java Musik machen? Java Basics - Anfänger-Themen 86
TheSorm String zu Methode machen Java Basics - Anfänger-Themen 1
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
O Zwei Methoden zueinander Thread-safe machen (Locken) Java Basics - Anfänger-Themen 9
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
M Ausführen rückgängig machen Java Basics - Anfänger-Themen 2
K RGB Wert Heller machen (Dunkler machen klappt) Java Basics - Anfänger-Themen 2
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T Text auf der Konsole farbig machen Java Basics - Anfänger-Themen 6
O Eigenen Addon-Loader machen? Java Basics - Anfänger-Themen 33
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
I Objekte verfügbar machen Java Basics - Anfänger-Themen 5
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5
K Vererbung Methoden in klassen auslagern und in mehreren Klassen verfügbar machen Java Basics - Anfänger-Themen 8
B Datentypen Casts typesafe machen? ("unchecked") Java Basics - Anfänger-Themen 10
A Objekt global verfügbar machen Java Basics - Anfänger-Themen 4
B Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen Java Basics - Anfänger-Themen 3
H Ausgabe nebenläufig machen Java Basics - Anfänger-Themen 6
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
G Eingabe beliebig lang machen Java Basics - Anfänger-Themen 8
S Kapselung Member korrekt nach aussen verfügbar machen Java Basics - Anfänger-Themen 6
C Threads Methode unterbrechbar machen Java Basics - Anfänger-Themen 12
S Bytecode sichtbar machen Java Basics - Anfänger-Themen 2
L Aus ArrayInformationen Objekt machen? Java Basics - Anfänger-Themen 6
E Klasse abstract machen Java Basics - Anfänger-Themen 3
K Klasse für andere Klassen sichtbar machen Java Basics - Anfänger-Themen 6
P Aus einer Klasse ein Interface machen? Java Basics - Anfänger-Themen 5
B String zu int machen Java Basics - Anfänger-Themen 23
M Programm lauffähig machen ohne Run Configurations Java Basics - Anfänger-Themen 5
M aus vielen backsalshs einen machen Java Basics - Anfänger-Themen 6
M Backslash aus mehreren einen machen? Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
O Will ein Jar-Archive machen mit FAT JAR - geht nicht ! Java Basics - Anfänger-Themen 2
J Wie java programm noch schneller machen? Java Basics - Anfänger-Themen 30
R Problem: Threads Synchronized machen Java Basics - Anfänger-Themen 5
TheKing Bild nur in Kreis sichtbar machen Java Basics - Anfänger-Themen 6
V JFrame erst sichtbar machen wenns geladen ist Java Basics - Anfänger-Themen 8
J Oracle XE bekannt machen Java Basics - Anfänger-Themen 8
K Farbe heller machen Java Basics - Anfänger-Themen 4
C OOP Klassen in der "Hauptklasse" bekannt machen Java Basics - Anfänger-Themen 4
Q Iteration wie machen Java Basics - Anfänger-Themen 5
T Applet zentrieren / Rand machen Java Basics - Anfänger-Themen 5
M Fenster unsichtbar machen Java Basics - Anfänger-Themen 9
J binaerbaum aus listen machen Java Basics - Anfänger-Themen 8
A snapshot machen Java Basics - Anfänger-Themen 4
C Wie Objekte am besten anklickbar machen ? Java Basics - Anfänger-Themen 9
J arraylist ausserhalb der main Methode zugänglich machen (Elemente adden und updaten) Java Basics - Anfänger-Themen 4
H Parameterobjekt in App anwendungsweit verfügbar machen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben