Portal > Foren > Java > Allgemeine Java-Programmierung > automazische Typenanpassung
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 06.05.2005, 18:24 Nach oben    #1
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard automatische Typenanpassung

Hallo zusammen,

ich habe ein Verständnis-Problem mit dem Wertbereich von Datentypen. Ich möchte zwei Variabeln definieren und diesen jeweils eine Ganzzahl zuweisen. Beide Variabeln sind vom Typ interger. Die Zahlen die ich zuweise sind innerhalb des zulässigen Bereichs:

Code:
int laenge = 100000;
int breite = 200000;
Wenn ich diese beiden Zahlen multipliziere ergibt dies 20000000000. Dieser Wert überschreitet den Breich von integer. Also führe ich die Operation mit einer neuen Variable vom Typ log aus:

Code:
long flaeche = laenge * breite;
Als Ergebnis erhalte ich -1474836480 was natürlich falsch ist. Ändere ich die beiden Operanten ebenfalls auf long, also:

Code:
long laenge = 100000;
long breite = 200000;
erhalte ich das richtige Ergebnis. Denn Sinn warum ich einer Variable deren Wert int nicht überschreitet den Typ long geben muß verstehe ich nicht so ganz. Was ich aber viel schlimmer finde ist das ich ein falsches Ergebnis erhalte. Eine Exeption wäre doch besser wie ein falsches Ergebnis.

Viele Grüße
pixel
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 18:51 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Hi,
nach kurzem Brainstorming *g* würde ich mal sagen, dass Du ja auch zwei "long"s brauchst, um einen "long" zu erhalten.

Also so etwas in der Art.
PHP-Code:
long c = (long* (longb
sofern a und b beide nicht vom Typ "long" sind.

Grüße Ben.


EDIT:
Stimmt nicht ... man brauchtdoch eigentlich nur einen "long" auf der rechten Seite .. oder? :confused:
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 20:36 Nach oben    #3
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

ja, die Methode die beiden int's beim multiplizieren zu casten habe ich gefunden. Die Lösung finde ich aber nicht ganz optimal da sich ja hierdurch Fehler einschleichen können. Das kann aber durchaus daran liegen das ich blutiger Anfänger bin.

Viele Grüße
pixel
pixel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.05.2005, 22:06 Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

Zitat:
Zitat von Ben
EDIT:
Stimmt nicht ... man brauchtdoch eigentlich nur einen "long" auf der rechten Seite .. oder? :confused:
Genau. Das wird dann implizit zum "grössten" Typ gecastet.

MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM
"We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth
peschmae ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:01 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44