2012-12-06 66 views
0

我试图在视图中计算结果小于1的公式时遇到问题。我有下式:Arenda*TotalArea/10000 as TotalArenda 如果我有Arenda = 10和TotalArea = 10我得到TotalArenda = 0,00时,一般应在0.01 感谢计算公式中的Sql问题

+0

是什么类型Arenda和TotalArea的? – oryol

+0

@oryol他们是数字(12,2)类型。 – user1820705

回答

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 
+0

我试过了,它不工作:( – user1820705

+0

你是对的,TotalArea是整数,现在我意识到了。感谢很多! – user1820705

2

您使用colunns,所以改变类型可能是不可行的。 SQL Server对整数进行整数除法(其他数据库的行为不同)。尝试下列操作之一:

cast(Arenda as float)*cast(TotalArea as float)/10000 

或:

Arenda*TotalArea/10000.0 
+0

我尝试了第一个变体,它的工作。非常感谢! – user1820705