为什么C#round和SQL round函数产生不同的输出?

Vij*_*ade 8 c# sql-server rounding

我正在使用ROUND来自C#和SQL的函数,并且令人惊讶的是两者都产生了不同的结果.

在SQL中:ROUND(1250.00, -2)= 1300

在C#ROUND 1250中圆和precision = 2= 1200

有没有人遇到过这种情况?

Tan*_*lax 7

C#默认使用银行家的舍入,当你正好在.5标记时,它会舍入到最接近的偶数,而不是总是向上舍入.

msdn 文章的备注部分描述了这种行为.基本上,当您将大量舍入数字累积在一起时,可以减少舍入误差.