sql - 一次转换整数并四舍五入到小数点后 3 位?
问题描述
有没有办法只用一次转换/转换来划分两个整数并舍入到小数点后 3 位?
我看到convert
的所有例子decimal
,然后round
。有些人同时使用了分子和分母等。我见过round
orfloor
等ceiling
。
我只想使用一个演员表,我就完成了。
例如,1/3 would be 0.333
。5/3 is 1.667
我这样做是为了将该结果转换为varchar
.
解决方案
将两个 int 值相除 t-sql 只有两种可能的结果:
- 错误 8134(除以零)
- 又是一个 int 值
将操作数之一强制为numeric
:
select round(1.0/3,3,0)
为了避免尾随零,另一种方法:
select cast(1.0/3 as decimal(18,3))
这当然只适用于数字文字。如果您有列或参数值,cast
则仍然需要 a。
这种对代码高尔夫的微弱尝试又刮掉了一个角色:
select convert(decimal(9,3),1.0/3)
推荐阅读
- slurm - 如何使用 Slurm 获得交互式会话?
- javascript - Javascript 将对象子对象合并到一个新对象
- regex - 正则表达式最后一个单词之后的所有内容
- html - 锚标签有一半的链接,但是当我点击链接时,它会打开一个包含完整链接的新页面
- javascript - 从前端上传大文件
- celery - 芹菜偶尔会忽略 CELERY_TASK_DEFAULT_QUEUE
- python - 无法运行 StackNet 分类器的 predict_proba
- python - 如何为另一个列表中的列表分配新值?
- objective-c - Xcode11 - UIButton 等控件高度为 48,仅在 XR/XSMAX 设备中的 AppDelegate 中
- python - Python:确定数据点属于哪个集群