+ -
当前位置:首页 → 问答吧 → SQL语句中进行计算的数据精度问题

SQL语句中进行计算的数据精度问题

时间:2011-12-21

来源:互联网

SQL code
UPDATE hy_2d_fstemp_b SET 
iorimoney=1700*(1-10/100),
iprice=1700*(1-10/100),
ioricost=1700*(1-10/100)/300,
iunitcost=1700*(1-10/100)/300,
ioritaxcost=1700/300,
ioritaxprice=1700*(10/100),
itaxprice=1700*(10/100),
iorisum=1700,
isum=1700 
WHERE cinvcode='01'


这样一条语句,执行的结果并不是我想要的

在查询分析器中测试:
select 1700*(1-10/100)
的结果 竟然是 1700 .........

我应该怎样修改?才能保证数据准确性?

作者: erdong988   发布时间: 2011-12-21

SQL code
UPDATE hy_2d_fstemp_b SET 
iorimoney=CAST(1700*(1-10/100) AS DECIMAL(30,2)),
iprice=CAST(1700*(1-10/100) AS DECIMAL(30,6)),
ioricost=1700*(1-10/100)/300,
iunitcost=1700*(1-10/100)/300,
ioritaxcost=1700/300,
ioritaxprice=1700*(10/100),
itaxprice=1700*(10/100),
iorisum=1700,
isum=1700 
WHERE cinvcode='01'

作者: Leftie   发布时间: 2011-12-21

SQL code
select CAST(1700*(1-10/100) AS DECIMAL(30,2))

结果还是 1700

select 1700.00*(1.00-10.00/100)
的结果是对的
但每个参与运算的数都格式化太烦琐,想找个简单点的方法......

作者: erdong988   发布时间: 2011-12-21