我使用cast()后,数据为什么没有被四舍五入?

我的视图中的“发货款”字段是decimal:

 

 

按说应该是四舍五入的,但是运行后:

 

 

 

 

 

 

 

 

 

 

 

计算后没有经过cast的原值是:201258.675
而被cast函数处理后,应该四舍五入为:201258.68 的,但实际却是:201258.67。四舍五入失灵?

select CAST(1234.4 AS NUMBER (10, 2) ) as aa from dual ;
select CAST(12 AS NUMBER (10, 2) ) as aa from dual ;
select CAST(0 AS NUMBER (10, 2) ) as aa from dual ;

PS:追加一点,字符串可以直接进行类型转换,而无需使用to_number()函数做中间转换。SQL语句如下:

select CAST('1234.4' AS NUMBER (10, 2) ) as aa from dual ;
select CAST('12' AS NUMBER (10, 2) ) as aa from dual ;
select CAST('0' AS NUMBER (10, 2) ) as aa from dual ;