高手請進,爲什麽翻來覆去的計算就是不對呢
我在數據庫里遇到如下的情況
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 導致最後系統結帳失敗!
求高人指點這是爲什麽?用什麽方法才能不出現誤差?
[解决办法]
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 行受影响)
[解决办法]
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
[解决办法]
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
[解决办法]
保存成分数就精确了