我正在尝试确定在SQL中截断或删除额外小数位的最佳方法,而不进行舍入.例如:
declare @value decimal(18,2)
set @value = 123.456
Run Code Online (Sandbox Code Playgroud)
这将自动围绕@Value为123.46 ....这在大多数情况下是好的.但是,对于这个项目,我不需要那样做.是否有一种简单的方法来截断我不需要的小数?我知道我可以使用left()函数并转换回小数......还有其他方法吗?
我正在进行计算,但我没有得到预期的答案.我在计算时失去了一些规模.
计算公式为: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)?