Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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
-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
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
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.
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
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?