相关疑难解决方法(0)

在SQL Server中截断(不舍入)小数位

我正在尝试确定在SQL中截断或删除额外小数位的最佳方法,而不进行舍入.例如:

declare @value decimal(18,2)

set @value = 123.456
Run Code Online (Sandbox Code Playgroud)

这将自动围绕@Value为123.46 ....这在大多数情况下是好的.但是,对于这个项目,我不需要那样做.是否有一种简单的方法来截断我不需要的小数?我知道我可以使用left()函数并转换回小数......还有其他方法吗?

sql t-sql sql-server rounding

184
推荐指数
9
解决办法
61万
查看次数

执行计算时失去规模

我正在进行计算,但我没有得到预期的答案.我在计算时失去了一些规模.

计算公式为:651/1000*-413.72063274 = -269.33213191(至8 dp)

在SQL Server中我这样做:

declare @var numeric(28,8)
declare @a numeric(28,8)
declare @b numeric(28,8)

set @var = -413.72063274
set @a   = 651.00000000
set @b   = 1000.00000000

select CAST((@a/@b) * @var as numeric(28,8)) as result_1
     , CAST(CAST(@a as numeric(28,8)) 
      /CAST(@b as numeric(28,8)) as numeric(28,8)) 
      *CAST(@var as numeric (28,8))   as result_2
Run Code Online (Sandbox Code Playgroud)

结果是

result_1:-269.33213200(正确到6dp)
result_2:-269.332132(正确到6dp)

如何获取返回的查询:-269.33213191(正确到8dp)?

sql-server sql-server-2008

2
推荐指数
1
解决办法
1007
查看次数

标签 统计

sql-server ×2

rounding ×1

sql ×1

sql-server-2008 ×1

t-sql ×1