2017-07-11 6 views
1

レートとレートインを計算するSSISパッケージがあります。ProdとDevの小数点以下四捨五入動作(SSISパッケージ)

私はDEV環境でこれを実行し、レート= 1.3850588235、RateIns = 1.1389411765 しかし、私はprod環境、レート= 1.3850588235でこれを実行し、RateIns = 1.1389411764

私はSSMSでSSISロジックを模倣しようとしましたが、以下のコードは次のとおりです。

CREATE TABLE #TEMP(
GST [decimal](10, 2) NULL, 
[GSTFin] [decimal](10, 2) NULL, 
[GSTExl] [decimal](10, 2) NULL, 
[Rate] [decimal](18, 10) NULL, 
[RateIns] [decimal](18, 10) NULL 
) 
insert into #temp values (11773.00,2092.00,8500.00,0,0) 
UPDATE #TEMP 
SET Rate=ISNULL(GST,0)/ISNULL(GSTExl,0) 
,RateIns=(ISNULL(GST,0) - ISNULL(GSTFin,0))/ISNULL(GSTExl,0) 

SELECT * FROM #temp 
DROP TABLE #TEMP 

結果:DEV &のProdショー両方とも同じ値: レート= 1.3850588235、RateIns =これが確認1.1389411765

、その問題I SSISパッケージに含まれています。 ProdパッケージとDevパッケージの両方のコンポーネントのメタデータを比較しました。すべて一致します。 実際、Prod!にデプロイされた同じSSISパッケージは、

かしら、なぜ製品版SSISパッケージ示しているRateIns = 1.1389411764

任意の提案ですか?

+1

そのないあなたのパッケージです。それは10進データ型と関係があります。誰かがこれを早い段階で説明していましたが、残念ながら今スレッドを見つけることができません。 –

+0

ありがとうPrabhat。 googleでそれを検索するためのヒント?私はこのトピックを参照しようとしましたが、無駄です。 – Ash

+0

乾杯!もう一度それを見つけました。 :https://stackoverflow.com/questions/44918488/difference-when-casting-a-datetime-to-a-decimal-on-different-sql-servers/44919027#44919027 –

答えて

0

これは愚かな質問かもしれませんが、ハードウェアはprodとdevで同じです。異なるマシンで浮動小数点演算の結果を変えるのは簡単です。 IEEE 754 https://en.wikipedia.org/wiki/IEEE_754のルールに基づいて数学を行い、少なくとも1つの環境で正しい結果が得られているかどうかを確認することができます。

は、ここでまた、オンラインIEEE754計算 http://babbage.cs.qc.cuny.edu/IEEE-754/

+0

こんにちはショーン、あなたの考えをありがとう。はい、ハードウェアは両方のサーバー(RAM/SSD/CPU)で似ています。あなたがこれら以外のものを意味するのであれば、わかりません。3. ieee754計算機について - >私は使い方が分かりません。両方のサーバーで計算を実行し、それを電卓の値と一致させるべきですか? – Ash

+0

違いが生じるのはCPUとOS /ソフトウェアだけです。もし2つのシステムが異なる結果を出すならば、入力がIEEE-754仕様を使って手動で計算するか、 2つのシステムとの結果を比較し、1つまたは可能な両方が予想外の値になっていることを確認します。これはすべて、システムがieee754に準拠していることを前提としています。非常に実数の除算/乗算への変換は、問題を引き起こす可能性があります(http://wiki.seas.harvard.edu/geos-chem/index.php/Floating_point_math_issues) –

関連する問題