当我试图在视图中计算结果小于1的公式时,我遇到了问题。
例如我有下一个公式:Arenda*TotalArea/10000 as TotalArenda
如果我有Arenda = 10和TotalArea = 10,我通常应该得到TotalArenda = 0,00
感谢
答案 0 :(得分:2)
Make 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
答案 1 :(得分:2)
您正在使用列,因此更改类型可能不可行。 SQL Server对整数执行整数除法(其他数据库的行为不同)。尝试其中之一:
cast(Arenda as float)*cast(TotalArea as float)/10000
或:
Arenda*TotalArea/10000.0