Praktikum 8 mathe Methoden

Benutzeravatar
mnoll
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 17. Jul 2006 23:03

Praktikum 8 mathe Methoden

Beitrag von mnoll »

Müssen wir bei der double Implementierung auf jeden Fall die Math Funktion benutzen?

== > "by using some given function (Math.floor()) in this case" Sie wird uns ja nicht "übergeben" sondern
wir müssen sie ja explizit einbinden. Von daher hätte man ja die Wahl.

Man könnte ja auch einfach den double Wert nach (int) casten. Das wäre ein wenigen schneller finde ich.

Benutzeravatar
giftnudel
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 112
Registriert: 3. Mai 2005 11:26

Beitrag von giftnudel »

Hättest du einfach die floor Funktion genommen und die hingeschrieben anstelle hier etwas im Forum zu schreiben, wäre es noch schneller gewesen ... .

Benutzeravatar
Martin K
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 110
Registriert: 13. Okt 2006 17:56

Beitrag von Martin K »

Seltsamerweise liefert Math.floor einen double zurück ?!?
Bedeutet das, dass man dann trotzdem auf int casten muss?
Anders geht es wohl nicht...
Gäbe es die letzte Minute nicht,
so würde niemals etwas fertig.

- Mark Twain

Benutzeravatar
Simon MD
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 5. Mai 2007 12:27
Wohnort: Nieder-Ramstadt
Kontaktdaten:

Beitrag von Simon MD »

Bedeutet das, dass man dann trotzdem auf int casten muss?
Ganz genau :)
"Erfolg ist die Feigheit vor der eigenen Inkompetenz"
- Oliver Kalkofe -

Benutzeravatar
Martin K
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 110
Registriert: 13. Okt 2006 17:56

Beitrag von Martin K »

Aber dann wird ja Math.floor überflüssig, steht zwar expliziet da, dass wir floor nehmen sollen, macht aber keinen Sinn:

Wenn ich das richtig sehe, ist das hier:

Code: Alles auswählen

int i = (int) Math.floor(d);
dasselbe wie das hier:

Code: Alles auswählen

int i = (int) d;
d ist natürlich ein double...
Gäbe es die letzte Minute nicht,
so würde niemals etwas fertig.

- Mark Twain

Benutzeravatar
Simon MD
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 5. Mai 2007 12:27
Wohnort: Nieder-Ramstadt
Kontaktdaten:

Beitrag von Simon MD »

Das stimmt schon, nur wenn man den Wert ohne Zwischenspeichern gleich als index für ein Array nimmt, dann muss man Math.floor nehmen und nach int casten.
So spart man sich eine Zeile ;)

Also so: histogram[(int)Math.floor(doubleVal)]

Ich denke der Fall ist damit gemeint...
"Erfolg ist die Feigheit vor der eigenen Inkompetenz"
- Oliver Kalkofe -

Benutzeravatar
Martin K
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 110
Registriert: 13. Okt 2006 17:56

Beitrag von Martin K »

Stimmt, jetzt seh ich's auch.
Das würde in meinem obigen Beispiel auch nur gehen, wenn d der primitive Typ double ist und nicht von der Klasse Double wie bei diesem Praktikum.
Somit muss man doch Math.floor nehmen.

Im Klartext:
Von double nach int kann gecastet werden, aber nicht von Double nach int.

Im Praktikum haben wir ja Double deswegen kann man doch nicht direkt casten,
Mathe.floor() dagegen liefert einen double zurück.
Gäbe es die letzte Minute nicht,
so würde niemals etwas fertig.

- Mark Twain

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Wie wär's mit Double.intValue()? Laut Doku führt das den Cast gleich intern aus ;)

Benutzeravatar
Martin K
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 110
Registriert: 13. Okt 2006 17:56

Beitrag von Martin K »

Gut, wäre auch eine Möglichkeit.
Aber das macht dann wiederum das Math.floor() überflüssig, wobei das ja explizit in der Aufgabe steht, dass man floor nehmen soll.
Am sinnvollsten wäre aber einfach nur Double.intValue() zu nehmen...
Gäbe es die letzte Minute nicht,
so würde niemals etwas fertig.

- Mark Twain

Benutzeravatar
mnoll
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 17. Jul 2006 23:03

Beitrag von mnoll »

giftnudel hat geschrieben:Hättest du einfach die floor Funktion genommen und die hingeschrieben anstelle hier etwas im Forum zu schreiben, wäre es noch schneller gewesen ... .
oO naja zwar keine Antwort zu meiner Frage aber ein dummer Kommentar muss ja immer kommen.
Da es durch nen Testcase eh nicht festgestellt werden kann solls mir auch ehrlich gesagt egal sein.

TimN
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 19. Feb 2005 12:30

Beitrag von TimN »

@mnoll

Ha, aber ich lese das Forum und DU musst bei mir testieren, und wehe es ist kein floor vorhanden ;-)

Greetz Tim

Benutzeravatar
Red*Star
Kernelcompilierer
Kernelcompilierer
Beiträge: 510
Registriert: 28. Nov 2006 19:40

Beitrag von Red*Star »

Martin K hat geschrieben:Im Klartext:
Von double nach int kann gecastet werden, aber nicht von Double nach int.
Das lustige ist (sei D unser Double Objekt):

(int)(double)D

müsste wiederum gehen :D
Was Sonnenschein für das schwarze Erdreich ist,
ist wahre Aufklärung für die Verwandten des Erdreichs.

- N.F.S. Grundtvig

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

(int)(double)D funktioniert, man kann aber auch D.intValue() nehmen, ist für alle Number-erben, also auch Double, vorgeschrieben ^^

Antworten

Zurück zu „Archiv“