0
私は500/15に分割し、その結果に15を掛けます。異なる精度とスケールで結果が異なります。計算精度を最大限に引き出すためのDECIMAL(精度、スケール)
次のスクリプトを実行してください。
DECLARE @cost DECIMAL(36,4)
SET @cost = 500
SELECT @cost/15, (@cost/15) * 15
-- Scale is 4 so on multlyping, after dividing, result is not 500
-- Result = 33.333333, 499.999995
DECLARE @cost2 DECIMAL(36,5)
SET @cost2 = 500
SELECT @cost2/15, (@cost2/15) * 15
-- Scale is 5 so on multlyping, after dividing, result is 500
-- Result = 33.3333333, 500.000000
DECLARE @cost3 DECIMAL(32,5)
SET @cost3 = 500
SELECT @cost3/15, (@cost3/15) * 15
-- Precision decrease to 32 from 36 result is again not 500
-- Result = 33.33333333, 499.99999995
私はこの計算をdbで保存する必要があります。正確な計算が必要です。これは科学的なアプリケーションのいくつかの種類ではなく、クライアントがこれを持っている必要があります。
私はそれが私にDecimal(36,5)を与える精度が必要であることを知りたいと思います。私は17バイトが必要なのでこれを使うべきですか? 例で説明した精度を得るためのより良いアプローチは何でしょうか?
データの性質は何ですか。あなたの「15」の価値はどのドメインからですか?特に「コスト」とは何ですか? – onedaywhen
コストは10進数(9,2)で、15はintです。 – Kashif