是在sqlserver2000中实现。
如16.8363 /1.17,刚好得到14.39或者14.390000000000
500/1.17,得到427.350427350427。可下面的写法,得到的是14.393162393162,而不是14.39。
类型换成numeric,也是一样的错误。declare @results Decimal(18, 12)
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)--select @a=16.8363,@b=1.17
select @a=500,@b=1.17
select @results=@a/@b
select @results
如16.8363 /1.17,刚好得到14.39或者14.390000000000
500/1.17,得到427.350427350427。可下面的写法,得到的是14.393162393162,而不是14.39。
类型换成numeric,也是一样的错误。declare @results Decimal(18, 12)
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)--select @a=16.8363,@b=1.17
select @a=500,@b=1.17
select @results=@a/@b
select @results
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)--select @a=16.8363,@b=1.17
select @a=500,@b=1.17
select @results=CONVERT(DEC(18,2),@a/@b)
select @results楼主可以查一下精度的问题,是它们一起来确定精度的
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)select @a=16.8363,@b=1.17
--select @a=500,@b=1.17
select @results=cast( @a/@b as decimal(18,2))
select @results
如输入含税单价,计算最大位数是12位的不含税单价,
然后用不含税单价×数量=不含税金额,
不含税金额 × 0.17=税额。
--发生了隐式转换
declare @results Decimal(18, 12)
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)select @a=16.8363,@b=1.17
print '@a:' + cast(@a as varchar) + char(10) + '@b:' + cast(@b as varchar)
select @results=@a/@b
select @results--增加@a的精度,结果正确
declare @results Decimal(18, 12)
declare @a Decimal(18, 4)
declare @b Decimal(18, 2)select @a=16.8363,@b=1.17
print '@a:' + cast(@a as varchar) + char(10) + '@b:' + cast(@b as varchar)
select @results=@a/@b
select @results
--忘了贴结果
declare @results Decimal(18, 12)
declare @a Decimal(18, 2)
declare @b Decimal(18, 2)select @a=16.8363,@b=1.17
print '@a:' + cast(@a as varchar) + char(10) + '@b:' + cast(@b as varchar)
select @results=@a/@b
select @results
--结果
/*
@a:16.84
@b:1.17---------------------------------------
14.393162393162(1 行受影响)*/declare @results Decimal(18, 12)
declare @a Decimal(18, 4)
declare @b Decimal(18, 2)select @a=16.8363,@b=1.17
print '@a:' + cast(@a as varchar) + char(10) + '@b:' + cast(@b as varchar)
select @results=@a/@b
select @results
--结果
/*
@a:16.8363
@b:1.17---------------------------------------
14.390000000000(1 行受影响)*/