1

F#には立方根関数が組み込まれていますか?べき乗を使用して立方根を計算できることは知っていますが、float型の量の立方根を取得してfloatを取得したいので、私の場合は型チェックを行いません。

4

1 に答える 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 に答える