結果が 1 より小さい数式をビューで計算しようとすると問題が発生します。たとえば、次の数式がArenda*TotalArea/10000 as TotalArenda
あります。Arenda=10 と TotalArea=10 の場合、通常は TotalArenda=0,00 になるはずですが、 be 0.01 ありがとう
2 に答える
2
Arenda=10.0およびTotalArea=10.0を、10および10ではなく作成します。これにより、SQLは整数演算を使用せず、必要な精度が得られます。
実際、結果として0.0を取得できる唯一の方法は、Arendaが10(整数)で、TotalAreaまたは10000の少なくとも1つに小数点と末尾の0が含まれている場合、および括弧を使用してグループ化することで操作の順序をオーバーライドする場合のみです。そのような
select 10.0* (10/10000) as blah
すべてが整数の場合は0になります。すべてに小数が含まれている場合は、0.01になります。かっこを削除すると、いずれかが非整数型の場合は0.01になります。
精度が非常に重要な場合は、浮動小数点数ではなく小数にキャストすることをお勧めします。
select CONVERT(decimal(10,2), Arenda) * CONVERT(decimal(10,2), TotalArea) / 10000.0
于 2012-12-06T14:46:32.673 に答える
2
列を使用しているため、タイプを変更できない場合があります。SQL Server は整数で整数除算を行います (他のデータベースでは動作が異なります)。次のいずれかを試してください。
cast(Arenda as float)*cast(TotalArea as float)/10000
また:
Arenda*TotalArea/10000.0
于 2012-12-06T14:51:29.203 に答える