以保留两位小数为例,代码如下:
select
--floor
cast((0.333*1000 - mod(0.333*1000, 10)) / 10 / 100 as decimal(20,2)) as f333,
cast((0.335*1000 - mod(0.335*1000, 10)) / 10 / 100 as decimal(20,2)) as f335,
cast((0.330*1000 - mod(0.330*1000, 10)) / 10 / 100 as decimal(20,2)) as f330,
--round
cast(((0.333*1000+5) - mod((0.333*1000+5), 10)) / 10 / 100 as decimal(20,2)) as r333,
cast(((0.335*1000+5) - mod((0.335*1000+5), 10)) / 10 / 100 as decimal(20,2)) as r335,
cast(((0.330*1000+5) - mod((0.330*1000+5), 10)) / 10 / 100 as decimal(20,2)) as r330,
--ceil
case mod((0.333*1000), 10) when 0 then cast(0.333 as decimal(20,2)) else cast(((0.333*1000+10) - mod((0.33*1000+10), 10)) / 10 / 100 as decimal(20,2)) end as c333,
case mod((0.335*1000), 10) when 0 then cast(0.335 as decimal(20,2)) else cast(((0.335*1000+10) - mod((0.33*1000+10), 10)) / 10 / 100 as decimal(20,2)) end as c335,
case mod((0.330*1000), 10) when 0 then cast(0.330 as decimal(20,2)) else cast((