Fractional power of units of measures in F# F#の測定単位でサポートされている分数累乗はありません。F#測定モデリングの単位メトリックプレフィックス(マイクロ、ミリ、ナノ)
私のアプリケーションでは、メトリック接頭辞を使用してデータを考えるのが有益です。秒を扱うとき場合によってはミリ秒単位で、時には秒単位で結果が必要な場合もあります。
私が現在使用して考えている選択肢は私を与えるこの
[<Measure>] type milli
[<Measure>] type second
let a = 10.0<second>;
let b = 10.0<milli*second>
です:
val a : float<second> = 10.0
val b : float<milli second> = 10.0
は今、私は2回の操作で計算をできるようにしたいです。だから私は、私が今
val it : float<milli second> = 10010.0
を望んでいた、まさに私を与える
let milliSecondsPerSecond = 1000.0<(milli*second)/second>
let a = 10.0<second>;
let b = 10.0<milli*second>
(a*milliSecondsPerSecond) + b
を行うことができ、これはすべてが素晴らしく、光沢がありますが、あなたが複数のユニットと複数のプレフィックスをサポートしたいときにすぐに手に負えなく成長します。ですから、これをより汎用的なソリューションにする必要があると思いますが、どこから始めたらいいのか分かりません。私は、私は
let milliPer<'a> = 1000.0<(milli * 'a)/'a>
を試してみましたが、私はその単位の接頭辞が共通の問題であると想像するので、それは
... F#は不平を言うと私に語ったので、「非ゼロの定数は、一般的な単位を持つことができません」動作しません。前に誰かがこの問題を解決したと想像してください。 F#でユニット接頭辞を行うより慣れた方法はありますか?
これは、データ保存タイプ(例: KB、MB、GB)は、上記のようにベース10を使用し、その他のコンテキストではベース2を使用するため、変換係数は1000の代わりに1024になります。 –