我正在进行一项练习,要求我在另一个程序中调用存储过程.被调用的过程只是将两个数字分开,但结果似乎是向上舍入的.
在练习中,5.0除以10.0,结果为1.结果显然应为0.5.目标是在不改变DECIMAL类型的情况下正确显示输出.
这是代码:
GO
CREATE PROCEDURE uspDivide2Numbers
@decValue1 AS DECIMAL
,@decValue2 AS DECIMAL
,@decResult AS DECIMAL OUTPUT
AS
SET NOCOUNT ON
SELECT @decResult = @decValue1 / @decValue2
GO
CREATE PROCEDURE uspCallAnotherStoredProcedure
AS
SET NOCOUNT ON
DECLARE @decResult AS DECIMAL
EXECUTE uspDivide2Numbers 5.0, 10.0, @decResult OUTPUT
SELECT @decResult AS decResult
GO
uspCallAnotherStoredProcedure
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,我真的不明白为什么十进制值首先是圆的,所以这可能是我的问题.
a的默认比例decimal为零,这意味着你拥有的实际上是一个整数类型.因此,在0.5不更改数据类型的情况下无法返回值.
如果为类型指定精度和比例,例如decimal(18,2),它可以处理非整数的数字.比例是小数点分隔符后将存储的位数.
根据您的需求,您也可以考虑float和real浮点数据类型.
| 归档时间: |
|
| 查看次数: |
11882 次 |
| 最近记录: |