如何 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)
这是一个奇怪的,我有一个成本价,一个平均成本价。 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)