当前位置:  开发笔记 > 数据库 > 正文

整数除法SQL查询产生意外的小数位数

如何解决《整数除法SQL查询产生意外的小数位数》经验,为你挑选了1个好方法。

我想使用以下查询获取总金额

SELECT SUM(Quantity * UnitPrice * (Discount/100)) 
FROM Stock_Purchase_Details

我的桌子结构

Proid | unitprice | discountrate(inpercentage) | proqty
1     |  10.00    | 10.00                      |  10
2     |  10.00    | 10.00                      |  10

我希望总金额为20.00,但我使用的查询返回此结果20.00000000- 为什么?



1> HoneyBadger..:

注释描述得很好,结果是正确的,你可以做什么来获得你需要的格式的结果(只需将其转换为所需的数据类型:) CONVERT(decimal(5, 2), calculation).

为什么,我觉得,没有得到回答,这是你的实际问题.您将一个decimal(5, 2)带有integer.SQL服务器隐式注塑除数(100)股息(的数据类型decimal(5,2)),因为该数据类型必须匹配,并decimal采用优先级超过一个integer.除法的输出也是a decimal,但计算精度和比例.输出比例为max(6, scale of dividend + precision of divisor + 1)= max(6, 2 + 5 + 1).所以你最终得到的8是8个零.

事实上,最终的结果是DECIMAL(13, 8),完全是完整的.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有