0

結果が 1 より小さい数式をビューで計算しようとすると問題が発生します。たとえば、次の数式がArenda*TotalArea/10000 as TotalArenda あります。Arenda=10 と TotalArea=10 の場合、通常は TotalArenda=0,00 になるはずですが、 be 0.01 ありがとう

4

2 に答える 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 に答える