3

我为除法创建了一个简单的存储过程。当我运行它时,即使它们是小数,它也会对数字进行四舍五入。例如,5.0/10.0=1. 为什么这样做?

这是脚本:

GO
CREATE PROCEDURE uspDivide2Numbers2
     @intValue1 AS DECIMAL
    ,@intValue2 AS DECIMAL
AS
SET NOCOUNT ON      --Report only errors

DECLARE @intResult AS DECIMAL = 0

--Do calculation
SELECT @intResult = @intValue1 / @intValue2

--Display results
SELECT @intResult AS intResult

GO

uspDivide2Numbers2 5.0, 10.0

谢谢

4

1 回答 1

6

您尚未为 DECIMAL 数据类型定义比例。

用指定的比例声明您的存储过程参数。

  @intValue1 AS DECIMAL(10,2)
    ,@intValue2 AS DECIMAL(10,2)

DECLARE @intResult AS DECIMAL(10,2)

这意味着 @intResult 可以在小数点后有两位数(即 scale =2 )和最多 10 位数字。如果您不定义 scale ,则 sql 假定 scale =0 ,因此您不会得到小数点后的数字。

于 2013-05-20T02:56:07.223 回答