在SQLite中获取数字的ceil值

wro*_*ame 8 sql sqlite ceil

所以我看到这个问题有一个很好的答案,但无论如何我想要围捕,而不是无论如何都要四舍五入.例如,在转换int之前向它添加1将不起作用,因为它会将5.0"舍入"到6.0.

那么我应该如何ceil在SQLite中实现呢?

Gor*_*off 8

这个怎么样?

select (case when x = cast(x as int) then cast(x as int)
             else 1 + cast(x as int)
        end)
Run Code Online (Sandbox Code Playgroud)


Dom*_*goR 8

这将更优雅地给你相同的答案:

SELECT CAST(x+1-1e-n AS INT);
Run Code Online (Sandbox Code Playgroud)

(假设您的精度不超过n个小数点)

  • 这不会四舍五入,因为它将作为地板功能.如果x的小数部分低于0.5,那么x + 0.5将不会超过下一个整数.但是,这将起作用:`cast(round(x + 0.5)as int)` (2认同)
  • 不,这是不正确的.尝试使用x = 1 ......它会给你2 (2认同)