Konvertierung von m / s in km / h mit F # Maßeinheiten

8

Ich bin gerade dabei, F # zu lernen - und untersuche gerade die Maßeinheiten. Ich habe eine einfache Berechnung, die Meter pro Sekunde zurückgibt, und ich möchte eine Funktion einführen, die es in Kilometer pro Stunde umrechnet.

Mein Code sieht so aus:

%Vor%

Das funktioniert - ich bekomme 8.28673639 m / s und 29.832.251 km / h. Ich bin mir nicht sicher, ob dies der beste Weg ist, die Beziehung zwischen verschiedenen Einheiten auszudrücken. Kann das eleganter gemacht werden?

Zum Beispiel, die Linie macht (Float-Geschwindigkeit), um die Einheiteninformation aus dem Geschwindigkeitsparameter zu entfernen, um die msToKmph-Rückkehr km / h zu machen. Wenn ich die Einheitsinformationen vor der Berechnung nicht löschte, wäre die zurückgegebene Einheit: km m / (h s)

    
Jonas Follesø 11.12.2012, 14:39
quelle

2 Antworten

17

Erstens ist Ihr msToKmph völlig falsch. Obwohl es einen korrekten Rückgabewert zurückgibt, was es tatsächlich tut, ist es nur den ursprünglichen <m/s> -Wert fallen zu lassen, indem es in einen einfachen, meßlosen float konvertiert und dann multipliziert den messless Wert mit einem 3.6<km/h> .

Um die Beziehungen zwischen MEs besser auszudrücken, bedenken Sie Folgendes:

%Vor%

Beachten Sie, dass alle "magischen Zahlen" in ME-Konvertern eingeschlossen sind, daher bleiben Ihre Formeln sauber, z. Sie operieren einfach Werte und Konstanten, aber die ME werden vom Compiler berechnet.

Update: Die Philosophie der UoM-Konvertierung besteht darin, dass die Umrechnungsformeln etwas mit physikalischem Sinn sein sollten. Als Faustregel gilt, ob Ihr Conversion-Wert in Referenzbüchern angezeigt wird. Im Klartext ist 3.6<km/h> von oben nutzlos, aber 1000.0<m/km> sagt nur "es gibt 1000 m in 1 km", was sinnvoll ist.

Sie können hrToSec sogar so verbessern:

%Vor%

Dadurch wird jeder Wert zu einem bekannten Wert in Nachschlagewerken.

    
bytebuster 11.12.2012, 15:01
quelle
4

Sie haben Recht, dass das Entfernen von Informationen eine schlechte Sache ist. Sie sollten einige Konstanten mit geeigneten Einheiten für die Konvertierung erstellen.

%Vor%

Für km und m ist es eine generische Lösung, ein Einheitspräfix k zu definieren, so dass es für viele ME funktioniert, die Kilo als Metrik haben:

%Vor%     
pad 11.12.2012 15:02
quelle

Tags und Links