Der Martin: Option einer Select-Box vorselektieren

Beitrag lesen

Hallo,

das ist ja eine tolle Lösung.
Allerdings erscheinen bei der Umrechnung von cm nach inch noch Fehler.

Hmm, mal sehen...

<option value="171">6'7&quot; - 171 cm</option>
<option value="172">6'7&quot; - 172 cm</option>
[...]
<option value="183">6'0&quot; - 183 cm</option>

Junge Junge, sind die Leute groß! 6'7" wären ja schon rund zwei Meter!

$inch_decimal = $i/2.54;
$ft = round($inch_decimal / 12);
$in = round($inch_decimal % 12);

Tja, sieht aus, als hätte ich über diese drei Zeilen nicht ausreichend nachgedacht. Okay, bei der Modulo-Rechnung für den Zoll-Anteil kann nichts passieren (auch das Runden ist hier eigentlich völlig unnötig). Aber für die "Füße" sollte ich wohl besser die Nachkommastellen nach der Division einfach abschneiden, anstatt mathematisch korrekt zu runden. Also vielleicht so:

[1] $inch_decimal = round($i/2.54);
[2] $ft = floor($inch_decimal / 12);
[3] $in = $inch_decimal % 12;

Was steckt dahinter?
Nun, bei 171cm ergibt [1] zunächst 67 Zoll (ich denke, eine Rundung ist _hier_ sinnvoll). Die Division durch 12 in [2] ergibt 5.583, also 5 Fuß und irgendwas. Bei dem Zahlenwert würde round() mathematisch korrekt auf 6 aufrunden, was hier aber Quatsch ist, weil wir den Nachkommaanteil ja noch separat verarbeiten. Im Gegensatz dazu schneidet floor() die Nachkommastellen einfach ab, rundet also immer auf den nächstkleineren ganzzahligen Wert ab. Das ist das, was hier Sinn ergibt.

Sorry, nobody's perfect. War ja auch nur der erste Gedanke. ;-)
So long,

Martin

--
Schon gewusst, dass Aftershave trotz des Namens eigentlich eher fürs Gesicht gedacht ist?