F#には立方根関数が組み込まれていますか?べき乗を使用して立方根を計算できることは知っていますが、float型の量の立方根を取得してfloatを取得したいので、私の場合は型チェックを行いません。
質問する
687 次
1 に答える
4
測定単位で立方根を計算する組み込み関数はないと思います(他の場所にあるプリミティブ演算子モジュールsqrt
にあると思います)。したがって、唯一のオプションはべき乗を使用することだと思います。
ただし、単位なしでべき乗を使用し、単位が安全でない操作を単位を追加する関数でラップできるため、正しい単位で関数を取得できます。
let cuberoot (f:float<'m^3>) : float<'m> =
System.Math.Pow(float f, 1.0/3.0) |> LanguagePrimitives.FloatWithMeasure
F#は分数単位をサポートしていないため、cuberoot (10.0<m^3>)
またはを書き込むことができますがcuberoot (10.0<m^9>)
、書き込みcuberoot (10.0<m>)
を行うと、結果がメートル単位になるため、タイプチェックは行われません1/3
(これは分数単位です)。
このサンプルは、に対してのみ実装さcuberoot
れていfloat
ます。他の数値型で動作するオーバーロードされた関数を記述したい場合(おそらく必要になるかもしれませんfloat32
)、少し醜くなります(したがって、必要でない限りお勧めしません)が、次のような複数のオーバーロードを持つ中間型のトリックを使用できます、たとえば、この回答では。
于 2013-01-15T20:30:52.363 に答える