【发布时间】:2012-05-17 03:15:44
【问题描述】:
想不通。当 SQL 舍入为整数时,我需要返回 1 个小数位。
我读到整数除以整数在 SQL 中给出整数,但我需要一个截断的小数位作为临时表中的输出值。
我不介意 35.0 是否返回 35,但 35.17 应该返回 35.1。抱歉刚刚编辑。需要截断最后一个数字,而不是四舍五入。
create table #blah(output decimal(9,1))
DECLARE @a money
DECLARE @b money
DECLARE @intinterval decimal(9,1)
SET @a = 5
SET @b = 2
SET @intinterval = (@b / 1000.0) * (86400.0 / @a)
INSERT INTO #blah (output) VALUES (@intinterval)
SELECT * from #blah
drop table #blah
上面的等式应该给出 (2 / 1000) * (86400 / 5) = (0.002 * 17280) = 34.56
34.56 应截断为 34.5
【问题讨论】:
-
@intinterval 变量的类型是什么?请编辑您的帖子。谢谢
-
@intinterval 的声明是什么?这可能就是你的问题所在。如果我用
(@b / 1000.0) * (86400.0 / @a)替换VALUES (@intinterval)中的@intinterval,我会在select 语句结果中得到两位小数。 -
参考这个[link][1]。需要投和使用round函数[1]:stackoverflow.com/questions/5167299/…
-
添加了@intinterval decimal(9,1)
-
Patriotec:你需要四舍五入到小数点后 1 位,而不是 3 位。试试 round(round((@mnyminbid / 1000.00) * (86400.00 / @mnybudget),1, 1). 这是一个计算的 SQL Fiddle:sqlfiddle.com/#!3/c368d/5。注意 ROUND 有三个参数。第二个 1 是小数位数。ROUND 中的最后一个 1 表示截断而不是向上或向下舍入,以更近者为准。
标签: sql database sql-server-2008