精度は、10進数を返すようにnumとdenominatorの両方を10進数としてキャストしなければならない理由ですか?そして、最初の&の2番目のステートメントはなぜ異なる精度をもたらすのですか?どちらも1つの部分だけをキャストします。分割のためにnumとdenomの両方をキャストする理由はありますか?
そして、両方をdecimal(12,4)
にキャストする代わりに、分母をより高い精度でキャストしないでください。例えば
:
select 3/cast(2 as decimal(12,4))
select cast(3 as decimal(12,4))/2
select cast(3 as decimal(12,4))/cast(2 as decimal(12,4))
select 3/cast(2 as decimal(16,4))
RETURNS
1.5000000000000
1.500000
1.50000000000000000
1.50000000000000000
注続きを読むことができます。また、なぜ除算が予想よりも精度が高いのかを知りたい場合は、[文書化されています](https://msdn.microsoft.com/library/ms190476)を参照してください。 –