将参数转换为十进制类型,不进行四舍五入

时间:2019-06-25 03:48:04

标签: sql-server stored-procedures

我有一个numeric(38,8)类型的SQL Server列。我将十进制值“ 11.25”作为参数传递,并在存储过程中像这样插入到数据库中:

PaymentTotal = CAST(@PaymentTotal AS DECIMAL(38,8))

数据正在以11.00000000的形式插入数据库

我不明白为什么不是11.25000000吗?

我尝试过(10,2)和其他方法的组合,我尝试过将其投射为floatint,但似乎没有什么能阻止四舍五入。

1 个答案:

答案 0 :(得分:0)

DECLARE @PaymentTotal DECIMAL = 12.5

SELECT CAST(@PaymentTotal AS DECIMAL(38,8))

上面的代码将返回12.00000000

您必须像这样指定变量类型的精度:

DECLARE @PaymentTotal DECIMAL(38,8) = 12.5


SELECT CAST(@PaymentTotal AS DECIMAL(38,8))

,上面的代码将返回12.50000000