当我试图在视图中计算结果小于 1 的公式时遇到问题。例如,我有下一个公式:Arenda*TotalArea/10000 as TotalArenda
如果我有 Arenda=10 和 TotalArea=10,我会得到 TotalArenda=0,00,而通常应该0.01 谢谢
问问题
71 次
2 回答
2
使 Arenda = 10.0 和 TotalArea = 10.0 而不是 10 和 10。这将迫使 SQL 不使用整数数学,您将获得所需的准确性。
事实上,我能得到 0.0 的唯一方法是如果 Arenda 为 10(整数),而 TotalArea 或 10000 中至少有一个包含小数和尾随 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 回答