4

私たちのアプリでは、現在、すべてのエンジニアリングデータをSIのデータベースに保存するという決定の遺産があります。

データベースまたは.NET数値型で十分な精度と精度が得られないリスクが生じる可能性があるのではないかと心配しています。また、浮動小数点演算のアーティファクトが表示される可能性があることも心配しています(ただし、それ自体が問題になる可能性があります)。

たとえば、ソースデータは、Psi(ポンド/平方インチ)で表された(および一部のサードパーティサービスから読み込まれた)圧力量である可能性があります。エンジニアはこの測定単位を選択します。これは、(表現される量について)科学的記数法を必要とせずに、簡単に消化され、人間が読める数値を与える傾向があるためです。

数値を「標準化」するとき、つまり、この量を独自の永続性のために変換するとき、Pa(パスカル)に変換する可能性があります。これには、数値を他の潜在的に大きな数値で乗算または除算する必要があります。

多くの場合、非常に大きい数または非常に小さい数を格納することになり、さらに悪いことに、これらの数についてさらに計算を行う可能性があります。

現在、ORACLEfloatとSystem.Doubleを使用しています。

人々はこれについてどう思いますか?

アップデート

さらなる調査により、次のF#言語(私が書いているCTP)での測定単位のサポートが明らかになりました。

F#に次のようなユーザー入力を理解させることができるようです。

9.81<n/s^2> // an acceleration

また、独自の派生ユニットとユニットシステムを作成することもできます。

F#でニュートンの派生単位を作成する
(ソース:msdn.com

4

5 に答える 5

6

有効数字を覚えておいてください-測定の精度。PSIがポンド全体しか知られていない場合、Paに変換した後、小数点以下15桁がありますが、有効数字は1つだけです。

精度は精度とは異なります。エンジニアリングユニットで浮動小数点演算を実行するには、演算中にこれを考慮する必要があります。測定の精度よりも高い精度を保存したり、既知よりも高い精度を計算に使用したりしないでください。


編集:

NUMERIC(p,s)精度(桁数)とスケール(小数点以下の桁数)を明示的に指定できる場所を使用することも検討してください。

それがオプションでない場合は、特定の測定の精度を維持して、報告および/または計算で使用できるようにすることを検討してください。

于 2008-12-05T13:02:09.520 に答える
3

実際に持っているのとまったく同じ精度を保存できる限り、心配する必要はないと思います。

PSI をパスカルに変換する例 (1 PSI = 6 894.75 pa) を使用すると、たとえば 14.7 PSI を測定してパスカルに変換すると、101,352.825 になります。それは精度が高すぎる。計算ではなく、測定の実際の精度を反映するには、それを 101,000 として保存する必要があります。

変換に使用する数値は、変換中に精度が失われないように、少なくとも測定値と同じくらい正確である必要があることに注意してください。換算係数の精度は、測定値よりも多く (少なくとも 1 桁多く) することをお勧めします。

于 2008-12-05T13:05:45.003 に答える
2

エンジニアリングデータは通常、違いを心配するほど正確ではないと思います。「マイクロメータで測り、チョークで印を付け、斧で切る」という技術者の表現をご存知でしょう。それはそれを要約することについてです。実世界で構築された有効数字8桁と有効数字2桁の計算での12の違いを心配することは、まったく意味がありません。

于 2008-12-05T13:01:45.900 に答える
1

単位変換による精度の低下を避けるために、測定から得られたすべてのデータを測定された単位で保存できます。もちろん、これは、一部の圧力値が Pa で保存され、他の圧力値が Psi で保存される可能性があることを意味します。またはmmHg。それが解決するよりも多くの問題を引き起こすかどうかは、自分で判断する必要があります。

そして、他の回答にも同意します。ほとんどの場合、オラクルのフロートによって提供される精度は、測定自体の精度よりもはるかに高くなります。

于 2008-12-05T13:08:48.773 に答える
0

まあ、それはあなたがどれだけ正確になりたいかによります。エンジニアリングについて話すときよりも、3.2はエンジニアリングに関しては3.20と同じではないため、数値3.20を格納するだけでは十分ではないことを覚えておいてください。3.20は、3.2よりも高い精度を意味します。これは3.15 <=x<3.25である可能性があります。

于 2008-12-05T12:59:24.143 に答える