Sql Round,当打开.5时,舍入到更大的数字,即1.235结果1.24

时间:2015-04-09 14:31:22

标签: sql sql-server

在做发票时,我想要说1.235到1.23

Select Round(TestData,2) From TestTableRound

为什么我得到结果1.24,考虑到它的中途?我希望这个四舍五入到1.23。

这可能会导致结算时出现差异,有时发票与帐单不符。

好奇,任何帮助都会很棒,谢谢

2 个答案:

答案 0 :(得分:5)

也许你可以在四舍五入之前减少一点数量,比如这个

Select Round(TestData-.001,2) From TestTableRound

另一个技巧(对于你的情况)是乘以100,取整数部分,然后除以100

Select 
 CASE WHEN FLOOR(TestData * 1000)-FLOOR(TestData * 100)*10 <= 5 THEN
          FLOOR(TestData * 100)/100
      ELSE ROUND(TestData , 2)
 END 
 From TestTableRound

答案 1 :(得分:0)

关于四舍五入的维基百科文章应该有用:http://en.wikipedia.org/wiki/Rounding

您可能正在寻找Banker's Rounding。请参阅有关Microsoft实现的这篇文章:http://support.microsoft.com/en-us/kb/196652

如果没有关于你想要达到的目标的更多细节,我们实际上无法提供更多的帮助。