gpt4 book ai didi

sql-server - SQL Server 2008 中的小数舍入

转载 作者:行者123 更新时间:2023-12-02 13:09:43 24 4
gpt4 key购买 nike

我阅读了 T-SQL 的所有舍入函数,例如 RoundFloorCeil,但它们都没有对十进制数字进行舍入对我来说正确。

我有 2 个问题:

  1. 如何向下舍入小数 (3.69 ==> 3.5)?
  2. 如何对整数的最后 3 位进行四舍五入(例如 142600 ==> 143000)?

最佳答案

1) select CAST(FLOOR(2 * 3.69)/2 ASdecimal(2, 1)) 处理第一种情况 - 由 answer to a similar question on SQL Server Forums 提供,我对其进行了调整并快速检查。

请注意,如果您舍入到最接近的 0.5 的数字可能更大(例如 333.69 => 333.5),请务必在转换时指定更多的 decimal 精度(例如 select CAST(FLOOR(2 * 3.69)/2 ASdecimal(10, 1))),否则可能会出现溢出错误:

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

额外的精度不会影响底线结果(即 select CAST(FLOOR(2 * 3.69)/2 ASdecimal(10, 1))select CAST(FLOOR( 2 * 3.69)/2 ASdecimal(2, 1)) 均产生 3.5);但如果四舍五入的数字总是较小,那就太浪费了。

可提供 T-SQL 的在线引用和示例 FLOOR , CAST ,和decimal来帮忙。

2) select ROUND(142600, -3) 处理第二种情况。

类似的在线引用可用于 T-SQL ROUND .

关于sql-server - SQL Server 2008 中的小数舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com