ROUND()在sql中给出了不正确的结果

时间:2013-02-19 06:51:52

标签: sql-server oracle tsql rounding

select round(849299099755.3,2) from dual;

给出

849299099755.3

我如何在这里获得849299099755.30 ???

3 个答案:

答案 0 :(得分:3)

将数据类型转换为DECIMAL

SELECT CONVERT(DECIMAL(15,2), ROUND(849299099755.3,2))

SELECT STR(ROUND(849299099755.3,2), 20, 2)

答案 1 :(得分:1)

SQL Server

select convert(numeric(28,2),round(849299099755.3,2)) from dual;

答案 2 :(得分:1)

对于Oracle:

ROUND函数返回一个NUMBER,round(849299099755.3,2)确实等于849299099755.3,因此它正常工作。但是,当您想要显示它时,它将使用会话的默认数字格式设置。

要使用两位小数格式对其进行格式化,可以使用TO_CHAR函数,例如:

SELECT TO_CHAR(round(849299099755.3,2),'999999999990.00') FROM DUAL;