sql-server – 在SQL Server 2008中舍入十进制数

前端之家收集整理的这篇文章主要介绍了sql-server – 在SQL Server 2008中舍入十进制数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我读了T-sql的所有舍入函数,如Round,Floor和Ceil,但它们都没有正确地向下舍入十进制数.

我有两个问题:

>如何舍入十进制数(3.69 ==> 3.5)?
>如何舍入整数的最后3位数(例如142600 ==> 143000)?

解决方法

1)选择CAST(FLOOR(2 * 3.69)/ 2 AS十进制(2,1))处理第一个案例 – 由 answer to a similar question on SQL Server Forums提供,我对其进行了调整并快速检查.

请注意,如果您舍入到最接近的0.5的数字可能更大(例如333.69 => 333.5),请确保在转换时指定更多小数精度(例如,选择CAST(FLOOR(2 * 3.69)/ 2 AS十进制( 10,1))),或者你可能会收到溢出错误

Msg 8115,Level 16,State 8,Line 1
Arithmetic overflow error converting numeric to data type numeric.

额外的精度不会影响底线结果(即选择CAST(FLOOR(2 * 3.69)/ 2 AS十进制(10,1))并选择CAST(FLOOR(2 * 3.69)/ 2 AS十进制(2,1) )两者产量3.5);但如果你要四舍五入的数字总是更小,那就太浪费了.

有关示例的在线参考可用于T-sql FLOOR,CASTdecimal以提供帮助.

2)选择ROUND(142600,-3)处理第二种情况.

类似的在线参考可用于T-sql ROUND.

原文链接:https://www.f2er.com/mssql/78445.html

猜你在找的MsSQL相关文章