负数舍入的to_char变为-0而不是0

时间:2016-06-20 02:50:09

标签: oracle

我试图将值格式化为整数(删除小数),但当值为负数小于0时,它显示-0而不是0。有没有办法将它显示为0?

select to_char(-0.09,'9,999,999,999,999,990') from dual;

2 个答案:

答案 0 :(得分:4)

TO_CHAR只是格式化数字,而不是将其四舍五入。因此,首先使用ROUND,然后根据需要进行格式化。

 select to_char(round(-0.09),'9,999,999,999,999,990') from dual;

答案 1 :(得分:0)

如果要删除小数,请尝试以下解决方案。

SELECT TO_CHAR(TRUNC(-0.09),'9,999,999,999,999,990') FROM DUAL;

如果您想要对值进行舍入,请使用Noel建议的解决方案。理想情况下,舍入值是合乎逻辑的,而不仅仅是删除小数。