9

所以我看到这个问题有一个很好的答案,但我想无论如何都要四舍五入,而不是无论如何都要四舍五入。例如,在转换 int 之前向其添加 1 是行不通的,因为它会将 5.0“四舍五入”为 6.0。

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

4

4 回答 4

9

这个怎么样?

select (case when x = cast(x as int) then cast(x as int)
             else 1 + cast(x as int)
        end)
于 2013-02-19T23:56:33.043 回答
8

这将更优雅地为您提供相同的答案:

SELECT CAST(x+1-1e-n AS INT);

(假设您的精度不会大于n小数点)

于 2016-08-21T22:27:46.370 回答
0

使用 php 你可以很容易地:

$db->createFunction('ceil', 'ceil', 1);

$db->createFunction('floor', 'floor', 1);

select ceil(\`column`) from table;
于 2014-10-20T08:00:24.043 回答
0

一些有用的答案,我发现这个解决方案也很简单。

select round(column+0.5) from table;

这意味着如果您的原始数字 < 0.5,您总是向上舍入,或者如果您的原始数字 > 0.5,则向下舍入

于 2019-01-03T18:33:52.020 回答