【问题标题】:Divide integers and round to 3 decimal places with one cast?将整数除以一次并舍入到小数点后 3 位?
【发布时间】:2018-10-26 22:32:40
【问题描述】:

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

我看到的所有例子都是convertdecimal,然后是round。有些人同时投了分子和分母等。我见过roundfloorceiling 等。

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

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

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

【问题讨论】:

标签: sql sql-server tsql sql-server-2008


【解决方案1】:

将两个 int 值相除 t-sql 只有两种可能的结果:

  • 错误 8134(除以零)
  • 又是一个 int 值

将操作数之一强制转换为numeric 就足够了:

select round(1.0/3,3,0)

为了避免尾随零,另一种方法:

select cast(1.0/3 as decimal(18,3))

这当然只适用于数字文字。如果您有列或参数值,则仍需要 cast

这种对代码高尔夫的微弱尝试又刮掉了一个角色:

select convert(decimal(9,3),1.0/3)

【讨论】:

  • 问题是这会返回0.333000,如果我转换为varchar,它将返回“0.333000”
  • 已更新。其他解决方案同时使用castround,这个解决方案适用于圆形或铸造,这是您问题的前提。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多