首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高手請進,爲什麽翻來覆去的計算就是不對呢解决方法

2012-03-29 
高手請進,爲什麽翻來覆去的計算就是不對呢我在數據庫里遇到如下的情況SELECT CAST (124131.28*1.57/100 AS

高手請進,爲什麽翻來覆去的計算就是不對呢
我在數據庫里遇到如下的情況
SELECT CAST (124131.28*1.57/100 AS DECIMAL(18,2)) ---得到結果:1948.86
SELECT CAST(1948.86*100/1.57 AS DECIMAL(18,2))---得到的結果:124131.21
相差了0.07 導致最後系統結帳失敗!
求高人指點這是爲什麽?用什麽方法才能不出現誤差?


[解决办法]

SQL code
SELECT CAST (124131.28*1.57/100 AS DECIMAL(18,4)) ---得到結果:1948.86SELECT CAST(1948.8611*100/1.57 AS DECIMAL(18,3))---得到的結果:124131.21---------------------------------------1948.8611(1 行受影响)---------------------------------------124131.280(1 行受影响)
[解决办法]
SQL code
SELECT CAST (124131.28*1.57/100 AS DECIMAL(18,4)) SELECT CAST(1948.86*100/1.57 AS DECIMAL(18,4))
[解决办法]
数据库只是用来存数据,在数据库里面计算很多时候很难精确

建议把数据中的数据提出到程序中进行计算。

原因参考:
http://blog.csdn.net/coleling/article/details/6406904
[解决办法]
SQL code
SELECT CAST (124131.28*1.57/100 AS DECIMAL(18,4)) SELECT CAST(1948.86[b]11[/b]*100/1.57 AS DECIMAL(18,4))结果为:(无列名)1948.8611(无列名)124131.2803
[解决办法]
保存成分数就精确了

热点排行