私たちのアプリでは、現在、すべてのエンジニアリングデータをSIのデータベースに保存するという決定の遺産があります。
データベースまたは.NET数値型で十分な精度と精度が得られないリスクが生じる可能性があるのではないかと心配しています。また、浮動小数点演算のアーティファクトが表示される可能性があることも心配しています(ただし、それ自体が問題になる可能性があります)。
たとえば、ソースデータは、Psi(ポンド/平方インチ)で表された(および一部のサードパーティサービスから読み込まれた)圧力量である可能性があります。エンジニアはこの測定単位を選択します。これは、(表現される量について)科学的記数法を必要とせずに、簡単に消化され、人間が読める数値を与える傾向があるためです。
数値を「標準化」するとき、つまり、この量を独自の永続性のために変換するとき、Pa(パスカル)に変換する可能性があります。これには、数値を他の潜在的に大きな数値で乗算または除算する必要があります。
多くの場合、非常に大きい数または非常に小さい数を格納することになり、さらに悪いことに、これらの数についてさらに計算を行う可能性があります。
現在、ORACLEfloatとSystem.Doubleを使用しています。
人々はこれについてどう思いますか?
アップデート
さらなる調査により、次のF#言語(私が書いているCTP)での測定単位のサポートが明らかになりました。
F#に次のようなユーザー入力を理解させることができるようです。
9.81<n/s^2> // an acceleration
また、独自の派生ユニットとユニットシステムを作成することもできます。
(ソース:msdn.com)