【发布时间】:2018-12-07 08:54:37
【问题描述】:
我想把余数和商的值分开。
例如
@Qty = 35
@OnHand = 2
@Size = 6
Print (@Qty + @OnHand) / @Size --(35+2)/6 I should get 6
Print (@Qty + @OnHand) % @Size --(35+2)%6 I should get 2
假设我的@size & @OnHand 有一个像这样的小数值:
@Qty = 35
@OnHand = 1.5
@Size = 2.5
Print (@Qty + @OnHand) / @Size --(35+1.5)/2.5 I should get 14
Print (@Qty + @OnHand) % @Size --(35+1.5)%2.5 I should get 1.5
但是当我尝试使用 T-SQL 时,它没有显示与上面相同的值:
CREATE PROC CalculateQty
@Qty DECIMAL
AS
BEGIN
DECLARE @OnHand AS DECIMAL
DECLARE @Size AS DECIMAL
SET @OnHand = 2
SET @Size = 6
PRINT (@Qty + @OnHand) / @Size // result: 6.1666666666666
END
EXEC CalculateQty @Qty=35
同时当@Size = 2.5 它正在四舍五入并变成3。我认为这是由于变量数据类型decimal 并且我不能声明float,因为当我使用变量计算余数时它会抛出错误% modulo
【问题讨论】:
-
您可以在除法语句周围使用 FLOOR,并请用压力和比例声明小数。不仅仅是输入 DECIMAL。它的坏习惯。写 Decimal(18,3) fx - 35+2 % 6 不应该给 1 吗?它给出 37,可以除以 6,剩下 1 个
标签: sql-server stored-procedures