# long oder double



## Guest (16. Aug 2007)

Hallo 

ich mache gerade ein Praktikum und soll eine Kundenklasse anlegen.

Jetzt überlege ich ob ich bei der ID long oder double verwende.

Da ja keine kommazahlen auftreten sollen ist long besser oder?

Und noch was anderes wann verwendet man float und wann double.


----------



## y0dA (16. Aug 2007)

Na da beherrscht einer die Basics..

http://www.willemer.de/informatik/java/javatype.htm

http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Datatype.htm

Wie daraus ersichtlich wird ist double schlichtweg "größer" als float - du musst wissen wie groß deine Zahlen sind.

Betreffend double oder long für eine ID gilt dasselbe, obwohl ich davon ausgehe dass ein long ausreicht.


----------



## Gast (16. Aug 2007)

ja ich wollte ja bloß wissen was man in der praxis so verwendet um z.b eine große ID s 10 stellen oder irgendwann vielleicht mehr zu speichern und eine gleitkommazahl, welche als Geldbetrag verwendet wird. Deswegen die Frage?


----------



## y0dA (16. Aug 2007)

Ich benutze für ids so gut wie nie double! float benutzt du halt dort wo du es benötigst (bspw geldbeträge mit komma, berechnungen etc.)


----------



## geraldf (16. Aug 2007)

Hallo,

für IDs sind je nach Bedarf int und long geeignet.

float und double sind Gleitkommatypen und ungeeignet für Werte, die genau sein müssen, z. B. IDs und Geldbeträge.

Beste Grüße
Gerald


----------



## Gast (16. Aug 2007)

aber was wenn nicht double /float nimmt man denn sonst für Geldbeträge?


----------



## Guest (16. Aug 2007)

geraldf hat gesagt.:
			
		

> Hallo,
> float und double sind Gleitkommatypen und ungeeignet für Werte, die genau sein müssen, z. B. IDs und Geldbeträge.


Korret, für Geldbeträge sind float/double völlig ungeeignet. Einerseits hast Du viel zu viel Stellen hinterm Komma, die keiner braucht, andererseits sind die nicht genau genug um 0.1 exakt zu speichern.

Wenn man 0.17 Euro speichern möchte, dann speichert man einfach 17 Cent und gut ist.


----------



## geraldf (16. Aug 2007)

Eine andere Möglichkeit zum Speichern von Geldbeträgen ist die Klasse BigDecimal.

(Bei der Forum-Suche gibt's dazu auch einige Ergebnisse.)

Beste Grüße
Gerald


----------



## jobu0101 (16. Aug 2007)

Das ist richtig, einfach einen *int* nehmen und die Cents abspeichern. Wenn du mehr als 20 Millionen hast, dann von mir aus auch *long*.
Doch auch für IDs ist *doulbe* und *float*, wie schon gesagt, total ungeeignet. Da kann es sein, dass wenn du recht große IDs hast, er die letzten Stellen der ID nicht mehr kennt...


----------



## Gast (17. Aug 2007)

Hallo

Ok danke erstmal für die Tipps nehme jetzt für die ID's long und für geld int weil jeweils nur ein paar euro abgespeichert werden müssen. Das ganze soll ich jetzt in ein textfeld eingeben , auslesen und anzeigen können. Und das habe ich mal ne frage was besserer Stil ist.  das die eingabe richtig ist, prüfe ich ab.

Also ich erhalte ja nch der eingabe beim auslesen einen string. ist es jetzt besser den zu double zu parsen und mal 100  zu rechnen oder einfach das komma rauslöschen

also besser so 

```
double value = Double.parseDouble(text.gettext());
int cent = value * 100;
[code]

oder so
[code]
String value = text.get(text).replace("," , "");
int cent = Integer.parseInt(value);
[code]
int cent =
```


----------



## Gast (17. Aug 2007)

oh hab den text gleich bei queick replay geschrieben bei den schließenden tags den / vergessen. 
kann das eventuell jemand ändern?


----------



## jobu0101 (17. Aug 2007)

Schon lustig, wie du dir den String beschaffst...

Einmal so:

```
text.gettext()
```
und einmal so:

```
text.get(text)
```

Wie wäre es mit 
	
	
	
	





```
text.getText()
```
?


----------



## Gast (18. Aug 2007)

Nein ich beschaffe mir den string mit text.getText(), hatte das nur schnell runtergetippt meine frage war aber welches der bessere Weg wäre das ganze in den cent wert zu wandeln also einfach das komma mit replace löschen oder in double parsen ?


----------



## Leroy42 (18. Aug 2007)

1) ',' durch '.' ersetzen
2) Double parsen
3) Mit 100 multiplizieren

Damit z.B auch eine Eingabe von "3" richtig in 300 (Eurocents) überführt wird


----------



## Gast (20. Aug 2007)

hallo,
hab jetzt erst wieder reingeguckt und wollte mich für den hinweis bedanken. habe aber leider immer noch ne Frage wieso kann ich mit math.round nur von Float to Int oder von Double to Long casten. ich möchte ja aber von double to int parsen. Welche funktion muss ich dafür verwenden


----------



## Gast (20. Aug 2007)

Ok habe es gefunden es gibt ja für Double die Methode intValue.


----------

