首页 > 解决方案 > 如何在不自动舍入的情况下在 SQL Server 中返回具有两位小数的数字

问题描述

这很奇怪,我有一个成本价和一个平均成本价。avg 由 avg 函数确定,并与成本价格相比,如下所示:

Cost Price | Average Cost Price
   8.24            8.23897666

现在,当我使用下面的代码时,即使我没有指定任何圆形函数,它也会将其更改为 8.24

select cast(8.23897666 as numeric(18,2))

我尝试将其转换为浮点数,但仍将其四舍五入为 0.24,即使我希望它只返回 2 位小数。

任何人都可以对此有所了解,因为我不确定为什么会这样?AS 不管小数点前的数字是多少,我都将返回完整的数字和 2 个小数位。

标签: sqlsql-serverdatabaseselectdecimal

解决方案


您可以使用floor()整数除法:

select floor(8.23897666 * 100) / 100

或者更好的是,使用round()0第三个参数:

select round(8.23897666, 2, 1)

推荐阅读