SSRS 2005 Round(foo,0)将十进制值舍入为12.6到12而不是13

时间:2011-03-10 17:12:26

标签: reportingservices-2005 rounding

我有一个报告字段,可以包含不同类型的数据,因此我需要使用函数进行舍入和格式化。

在一种情况下,我有一个小数(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舍入?

2 个答案:

答案 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