如何 return 服务器中 SQL 有两位小数的数字而不自动舍入

How to return a number with two decimal places in SQL Server without it automatically rounding

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

Cost Price | Average Cost Price
   8.24            8.23897666

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

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

我试过将它转换为浮点数,但它仍然四舍五入为 .24,即使我希望它只保留 return 两位小数。

有人能解释一下吗,因为我不确定为什么会这样?因为无论小数点前的数字是多少,我都是 return 完整数字和 2 位小数。

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

select floor(8.23897666 * 100) / 100

或者更好的是,将 round() 与非 0 第三个参数一起使用:

select round(8.23897666, 2, 1)