加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:38:15 所属栏目:MsSql教程 来源:网络整理
导读:我读了T-SQL的所有舍入函数,如Round,Floor和Ceil,但它们都没有正确地向下舍入十进制数. 我有两个问题: 如何舍入十进制数(3.69 == 3.5)? 如何舍入整数的最后3位数(例如142600 == 143000)? 解决方法 1)选择CAST(FLOOR(2 * 3.69)/ 2 AS十进制(2,1))处理第一个
我读了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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读