Umwandlung US-Längenformate "FIF" — "FT"
Für Längenangaben bevorzugt man in den USA immer noch recht häufig gemischte Einheiten Fuß + Zoll + Bruchteilen, im Format feet-inches-fractions (FIF). Man drückt so z.B. ein als Dezimalfuß gegebenes 5,6 ft als 5 ft 7 1/4 in aus. Es gibt spezielle Taschenrechner, die mit diesen gemischten Einheiten rechnen, wie z.B. den im Forum vorgestellten Dimension Master Plus.
Das Rechnen mit solchen Werten erfordert recht umständliche Umrechnungen zwischen den Teileinheiten. Für reine Längemaße wird hier ein Programm für den HP11C vorgestellt, das diese fehlerträchtige Umrechnung in beide Richtungen erledigt.
Doch zunächst: Wie eigentlich funktioniert diese Umrechnung?
Formate FIF und FT
Die Länge x stellen wir im dezimalen Fuß-Format FT als "ft.nnn" dar oder im Format FIF als "ft.iiff" (Fuß, Zoll, Bruchteil mit Zähler "ff", Nenner 2<=d<=100). Beide Formate bestehen aus gleichem Ganzzahlteil [x]. Die Umwandlung ändert nur den Nachkommateil {x}.
In FIF bilden die beiden ersten Dezimalstellen ganze Zoll (12 in = 1 ft) im Bereich 0<="ii"<=99. Die 3. und 4. Dezimale sind der Zollbruchteil mit 0<="ff"<=99. Fügt man diese Einzelteile zusammen, erkennt man, daß eine einzige Formel f(x,p) beide Formate darstellen kann:
FIF = [x] + 1/100 · [ 12·{x} ] + 1/100 · { 12·{x} } · d/100
FT = [x] + 1/12 · [ 100·{x} ] + 1/12 · { 100·{x} } · 100/d
vereinheitlicht:
f(x,p) = [x] + 1/r2 · ( [ r1·{x} ] + { r1·{x} } · (d/100)p )
1) FIF: p = 1, r1 = 12 = 56 - 44, r2 = 100 = 56 + 44
2) FT: p = -1, r1 = 100 = 56 + 44, r2 = 12 = 56 - 44
mit den bivalenten Koeffizienten: r1 = 56 - 44·p, r2 = 56 + 44·p
Mir ist eine handvoll Programme zu diesem Thema bekannt für die TR-Modelle HP65, HP68, HP41C und HP42s sowie für Basic-programmierbare Taschencomputer. Alle verwenden getrennte Formeln zur Umrechnung von FIF nach FT bzw. umgekehrt. Manche FIF-Programme bemühen gar eine interne Bruchrechnung, was die Dinge komplizierter macht als nötig. Die hier gewählte vereinheitlichte Berechnung konnte ich bisher leider nirgendwo entdecken. Sie macht meiner Meinung nach dort Sinn, wo Programmspeicher knapp ist, also in Tastenprogrammen. Außerdem kommt sie ohne Testbedingung aus, so daß man daraus direkt ein einfaches Geradeausprogramm schreiben kann.
Der Parameter p bestimmt die Richtung der Umrechnung und wird einfach am Start gesetzt. Die bivalenten Koeffizienten r1 und r2 bestimmen das Ausgabeformat. Mit dem Wert d wird vor Programmstart durch Speichern in Register R6 der Nenner des Zoll-Bruchteils festgelegt.
Bedienung
Einstellung für Zoll-Bruchteile (z.B. 1/16 Inch):
16 STO 6
Beispiel: 6 ft 5 3/16 in
1) FIF -> FT
6.0503 GSB A
Ergebnis: 6.432 (FT)
2) Nun wechseln wir spaßeshalber zu einem anderen Nenner d:
32 STO 6
und zeigen wieder in FIF an:
R↓
6.432 GSB B
Ergebnis: 6.0506 (FIF)
Wie zu erwarten wird also errechnet: 6 ft 5 6/32 in.
Die Ergebnisse bleiben in voller Genauigkeit erhalten, werden lediglich auf das Ausgabeformat gerundet angezeigt. Der Stapelinhalt bleibt erhalten.
Programmcode
< f LBL 0 Stapel sichern #t z y x
STO 0 x
Rv #x t z y
STO 1
R↓ #y x t z
STO 2
R↓ #z y x t
STO 3
1 #y x t 1
- g RTN
* f LBL A FIF->ft
+ GSB 0
CHS Parameter #y x t -1
> GTO 1
* f LBL B #ft->FT
+ GSB 0
< f LBL 1
STO 4 #p: -1|1
f FIX 4 Format FIF: ft.iiff
e^x
g INT 0|3
? g x=0
f FIX 3 Format FT: ft.ddd
5 Formel f(x,p) für Umrechnung ft<->FIF
6 Konstante für bivalente Koeff.
RCL 4 p
4
4
×
STO 5 zwischengespeichert: 44p
- r1
RCL 0 x
f FRAC {x}
× x_F
g INT [x_F]
g LSTx
f FRAC {x_F}
RCL 6 d
EEX
2 #[x_F] {x_F} d 100
÷
RCL 4 p
y^x d1
×
+ Klammerausdruck (...)
RCL 1 y
x<>y #y ()
RCL 5 44p
5
6
+ r2
÷ "ii+ff"
RCL 0 x
g INT [ft]
+ "ft.iiff"|"ft.nnn"
RCL 3 Stapel wiederherstellen #"ft.iiff"|"ft.nnn" t
RCL 2 #"ft.iiff"|"ft.nnn" t z
RCL 1 #"ft.iiff"|"ft.nnn" t z y
g R↑ #t z y "ft.iiff"|"ft.nnn"
# g RTN
Legende des Randschemas:
* Programmstart
> Sprung mit GTO oder GSB
< Sprungziel von GTO oder GSB
? Testbedingung
+ Sprung zu Unterprogramm
- Ende Unterprogramm
# Programmende
Display More
Als Europäer stellt man sich unwillkürlich die Frage, ob US-Einheiten und deren Chimären in Zeiten der globalen Verwendung des SI überhaupt noch sinnvoll sind. Hier sollte man die Beharrlichkeit mancher Branchen nicht unterschätzen, etwa das Bauwesen und den Anlagenbau. Solange es noch Firmen in den USA gibt, die auf Verwendung ihrer althergebrachten EInheiten bestehen, wird man mit diesem Anachronismus wohl leben müssen.
Have fun converting! ... to SI!