首页 > 解决方案 > 一次转换整数并四舍五入到小数点后 3 位?

问题描述

有没有办法只用一次转换/转换来划分两个整数并舍入到小数点后 3 位?

我看到convert的所有例子decimal,然后round。有些人同时使用了分子和分母等。我见过roundorfloorceiling​​。

我只想使用一个演员表,我就完成了。

例如,1/3 would be 0.3335/3 is 1.667

我这样做是为了将该结果转换为varchar.

标签: sqlsql-servertsqlsql-server-2008

解决方案


将两个 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)

推荐阅读