sql-server - 将 0.5 及以下舍入为零的更简洁方法?
问题描述
SELECT ROUND(CAST(0.51 AS FLOAT), 0) AS FiveOne
, ROUND(CAST(0.5 AS FLOAT), 0) AS Five
, ROUND(CAST(0.4999999 AS FLOAT), 0) AS FourNine
FiveOne Five FourNine
---------------------- ---------------------- ----------------------
1 1 0
如何将 0.5 和 0.49999 舍入为零(向下舍入最接近的整数),而将 0.51 舍入为 1?我想我可以执行以下操作,但是有更简洁的方法吗?
SELECT ROUND(CAST(0.51 AS FLOAT), 0) AS FiveOne
, CASE WHEN CAST(0.5 AS FLOAT) <= CAST(0.5 AS FLOAT)
THEN FLOOR(CAST(0.5 AS FLOAT))
ELSE ROUND(CAST(0.5 AS FLOAT), 0)
END AS Five
, ROUND(CAST(0.4999999 AS FLOAT), 0) AS FourNine
FiveOne Five FourNine
---------------------- ---------------------- ----------------------
1 0 0
解决方案
这个怎么样
select amt, ceiling(amt - 0.5)
from
(
select amt = 0.51 union all
select 0.5 union all
select 0.4999999
) a
结果 :
0.5100000 1
0.5000000 0
0.4999999 0
推荐阅读
- django - django datetimefield 迁移验证错误
- python - 为什么python字符串既有索引又有find
- php - PHP AES 加密密钥
- sql-server - Source Assistant 无法识别 SQL Anywhere OLE DB 提供程序
- react-native - 将 viro-react 集成到 react-native 项目中
- reactjs - ReactJS 中常见的自定义 http 头参数
- git - Gitlab单独分支访问单独用户
- scala - Spark 任务不可序列化(数组 [向量])
- angularjs - 无法创建 Angular ui-select 字段条目 uuid
- javascript - 从重定向角度 5 中获取查询参数