gpt4 book ai didi

sql-server - Sql Server 2008 R2 查询中的舍入问题

转载 作者:行者123 更新时间:2023-12-03 17:05:24 24 4
gpt4 key购买 nike

任何人都可以帮助解决以下舍入问题。提前致谢

我有号码:3.1050要求输出:3.10但是当我使用 ROUND(3.1050,2) 我得到结果 3.11 因此我不能在那里使用 ROUND ..以下是一些可以帮助您解决我的问题的案例

如果值为:3.1030要求输出:3.10如果值为:3.1050要求输出:3.10如果值为:3.1080要求输出:3.11

最佳答案

您需要的是 Round Half Towards Zero SQL Server 内部不提供的舍入方法; SQL Server 的 ROUND() 函数始终在“Round away from zero”后面加上一个附加参数,用于截断而不是舍入。

因此只需编写一个用户函数,它使用 Round() 函数围绕最后一位数字为 5 后跟零的边缘情况:

Create Function dbo.RoundToZero(@Val Decimal(32,16), @Digits Int)
Returns Decimal(32,16)
AS
Begin
Return Case When Abs(@Val - Round(@Val, @Digits, 1)) * Power(10, @Digits+1) = 5
Then Round(@Val, @Digits, 1)
Else Round(@Val, @Digits)
End
End

来源:SQL Server Rounding Methods

关于sql-server - Sql Server 2008 R2 查询中的舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com