你好,我有一个要求,我需要根据条件四舍五入小数:
如果小数点后的前两位不是00,那么我需要将其四舍五入为2位,否则为3位。
示例:
1.232133342 => ROUND(1.232133342,2)
//这将起作用
但如果数字为1.00233231213
,则值应为1.002
//四舍五入到三位数
如果数字为1.0000223123312
,则该值应为1.00002
有功能吗?有帮助吗?
答案 0 :(得分:4)
四舍五入到至少两位数,或者通过使用RegEx计算小数部分中前导零的数目可能会更多
round(x, greatest(2, length(regexp_substr(x,'\.0*'))))
请参阅db-fiddle
答案 1 :(得分:3)
从数字中减去数字的底数,然后检查数字是否小于.01
。
CASE WHEN ABS(number) - FLOOR(ABS(number)) < .01 THEN ROUND(number, 3)
ELSE ROUND(number, 2)
END