我有一个报告字段,可以包含不同类型的数据,因此我需要使用函数进行舍入和格式化。
在一种情况下,我有一个小数(9,2)值存储小时数,我需要显示为小数点零的分钟。
Round(foo*60, 0)
,其中foo = .01
(乘以60时为0.6),输出1就像我期望的那样。
Round(foo*60, 0)
,其中foo = .21
(乘以60时为12.6),输出的是12而不是13。
为什么呢?如何让它始终如一地使用标准的4/5舍入?
答案 0 :(得分:0)
我无法重现您的结果。也许您正在隐藏其他一些相关细节。
Declare @foo Decimal(9,2)
Set @foo = 0.21
Select Round(@Foo * 60, 0), @foo * 60
上述代码的输出分别为13.00和12.60。
Foo列可能是浮点数,还是foo列中的精度更高?例如,以下代码生成12(而不是13)。
Declare @foo float
Set @foo = 0.208
Select Round(@Foo * 60, 0), @foo * 60, Round(@foo, 2)
答案 1 :(得分:0)
看看这个其他stackoverflow问题:
SQL Server Reporting Services Round() function
你看到Round to Even逻辑而不是中点舍入。
这篇维基百科文章包含有关舍入的所有详细信息: Wikipedia Rounding Article