Wertebereiche und Datentypen

Bitte aktiviere JavaScript!
Hallo zusammen.

Folgende Frage habe ich:

Ich bringe mir gerade Java bei und habe in meinem Buch aus welchem ich lerne, nun eine Aufgabe zum Thema Wertebereich und Datentyp:

Aufgabe: Für die jeweiligen Wertebereiche den kleinstmöglichen Datentyp zu finden.

Meine "Lösung" :

Wertebereich -> Datentype
1 bis 10000 -> short
50.33 bis 10012.61 -> float
0.1234567123 bis 1 -> float
1 bis 200 -> short
-10 bis 3243231231 -> int
5.66 * 1040 bi 5.66 * 1050 -> double
K bis Z -> char

Was sagt ihr, stimmt das so?

Viele Grüße
Jos
 
Zuletzt bearbeitet:
-10 bis 3.243.231.231 passt nur in Long (Signed int geht nur von ca 2,147 mrd bis -2,147 mrd)
1 bis 200 passt auch in einen Byte
5.66 * 1040 bis 5.66 * 1050 würde nach einem Cast auch in einen Int passen

Edit: Falls du 10^40 und 10^50 meinst dann passt es allerdings nur in einen double rein
 
Zuletzt bearbeitet:
Hi, danke für deine Antwort.

Ja ich habe 10^40 und 10^50 gemeint, daher double.

Aber: Wie kann 1 bis 200 in ein Byte passen? Der Wertebereich für ein Byte ist: -128 ... 127 oder?
 
Das hängt davon ab, ob du es auf java bezogen meinst oder eher allgemeiner. Im allgemeinen Fall ist ein Byte 0 .. 255 und da würde es ja rein passen.

In java ist der Byte halt immer signed und somit geht eben ein Bit fürs Vorzeichen flöten. In dem Fall hast du recht, wenn du tatsächlich was über 127 in Java brauchst, musste den nächsten Typ nehmen.

Edit: Über Bitgehacke kannst du aus dem Java Byte aber auch 0 .. 255 rauskitzeln :)
 
Zuletzt bearbeitet:
:) Danke für die Hinweise.

Es bezieht sich alles von den Werten auf Java, daher auch 127...

Was genau meinst du mit " In Java ist der Byte halt immer signed" ? Also was bedeutet signed in dem Fall?
 
Naja signed bedeutet Vorzeichenbehaftet und unsigned Vorzeichenlos. Also sind die Primitiven in Java immer signed (Außer char - ja da kannste auch normal Zahlen reinstecken), da die ja immer vom negativen zum positiven Bereich gehen.
 
Das war bei mir nicht anders als ich angefangen hab und ich denke, dass es allgemein eher sehr selten ist, dass sich jemand ein buch schnappt und nach dem durchlesen sofort alles kann.

Also bleib dran :D
 
Die Aufgabe ist extrem s*****e gestellt und kann gar nicht richtig beantwortet werden.

Z.B. "1 bis 200". Was soll das genau heißen? Woher nimmst du die Information, dass nur Ganzzahlen abgebildet werden sollen?
Oder auch "0.1234567123 bis 1". Welche Zahlen aus dem angegebenen Intervall sollen denn dargestellt werden können? Alle bestimmt nicht, das geht nicht.

Also entweder du verschweigst Informationen aus der Aufgabenstellung, oder die Aufgabe kann nicht gescheit gelöst werden, da sie einfach falsch gestellt ist.
 
Ich schätze mal anhand seiner Reaktionen, dass ich die Aufgabe richtig verstanden habe. Ich finde nicht das die Aufgabenstellung so schlecht gestellt ist, dass du hier anfangen musst mit vulgären Begriffen um dich zu schmeissen.

Wenn dir die Aufgabe zu schwer ist, hilf ihm halt einfach nicht. Ich glaube auch kaum das in dem Stadium in dem sich der Thread-Ersteller (Entschuldige sollte ich mich irren) befindet es relevant ist zu wissen, dass man die dezimale Zahl 0,1 in ihrer binären Darstellung nicht endlich darstellen kann.
 
Entweder hast du meinen Post nicht richtig gelesen, oder einfach nicht verstanden.

Und die Frage, ob mir die Aufgabe zu schwer ist oder nicht, stellt sich gar nicht, da sie ganz offensichtlich erhebliche Mängel aufweist. Neben den oben schon genannten Punkten stellt sich z.B. auch die Frage, was denn nun "der kleinstmögliche Datentyp" genau meint. Ist denn nun z.B. ein float größer oder ein int? Und warum?

Wenigstens verschone ich den TE mit solch unsinnigen Aussagen wie:
1 bis 200 passt auch in einen Byte
5.66 * 1040 bis 5.66 * 1050 würde nach einem Cast auch in einen Int passen
Mit der Argumentation würde nach einem entsprechenden Cast schließlich auch alles in ein byte "passen"
 
Hallo,

ich muss mich derzeit beruflich auch mit Datentypen beschäfigen und hänge an einer Fragestellung, die zu diesem Beispiel passt: 0.1234567123 bis 1.

Ich schwanke hier zwischen Float und Double. Der Wertebereich von Float gibt m. E. eine Unterbringung des beispielhaften Bereichs her, allerdings hat Float ja nur eine einfache Genauigkeit (7 Stellen). Müsste dann nicht zur Darstellung des Wertes 0.1234567123 bereits Double mit seiner 15stelligen Genauigkeit verwendet werden?

Vielen Dank für Eure Hilfe!
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben