2017-11-18 232 views
2

指算来我有一个计算中,我得到的结果,但一些问题后,小数 地点是:我该如何解决SQL

(31,250x.04)/((1 + .04)^16.5)-1 = 1,373.52 (this is the original answer) 

但是,当我计算我得到1,373.626373。所以任何一个可以帮助我解决这个问题 我的计算是这样的:

选择(31250 * 0.04)= 1250.00

选择功率((1.04),16.5)-1 = 0.91

选择1250.00/0.91

+0

您正在使用哪个版本的SQL? –

+0

我的SQL版本是SQL Server 2012. –

+0

SQLITE有一个ROUND()函数,可让您设置小数点后的位数。谷歌说SQL SERVER也是。 – Marichyasana

回答

4

你需要转换到比默认的好精度数的文字来获取0.91007...术语的所有数字:

select convert(decimal(18,9), 31250 * 0.04)/(convert(decimal(18,9), power(convert(decimal(18,9), 1 + 0.04), 16.5))-1) 

使用比较所有结果

select convert(real, 31250 * 0.04)/(convert(real, power(1 + 0.04, 16.5))-1) 

select convert(float, 31250 * 0.04)/(convert(float, power(1 + 0.04, 16.5))-1) 

select convert(decimal(18,9), 31250 * 0.04)/(convert(decimal(18,9), power(convert(decimal(18,9), 1 + 0.04), 16.5))-1) 
+0

非常感谢给我解决方案它适用于我 –