读书人

一个decimal格式数据的有关问题()

发布时间: 2012-01-22 22:38:43 作者: rapoo

一个decimal格式数据的问题(在线等)
写有如下存储过程
DECLARE
@OrderNum nvarchar(50),
@Uname nvarchar(50),
@Addr nvarchar(500),
@Tel nvarchar(50),
@Email nvarchar(50),
@ProductID int,
@Price decimal(9),
@ProductSum int,
@Heji decimal(9),
@Asum decimal(9),
@Jurisdiction int/*权限会员或非会员*/
/*下面为赋值*/
SET @OrderNum = '114 '
SET @Uname = 'lll '
set @Addr= 'dfsaf '
set @Tel= '111111 '
set @Email= 'fdsad '
set @ProductID=16
set @Price= '7.6 '
set @ProductSum=2
set @Heji= '15.2 '
set @Asum= '15.2 '
set @Jurisdiction=3

declare @iOrderID int
declare @sCount int
/*向tblOrder(定单表中添加信息)*/
if (Exists(select ID from tblOrder where OrderNum=@OrderNum))
begin
select @iOrderID=ID from tblOrder where OrderNum=@OrderNum
end
else
begin
insert into tblOrder(OrderNum,UserName,Addr,Tel,Email,Worth,Jurisdiction)values(@OrderNum,@Uname,@Addr,@Tel,@Email,@Asum,@Jurisdiction)
set @iOrderID=@@identity
set @sCount=(select count(ID) from tblMember where Email=@Email and MemberType=@Jurisdiction)
if(@sCount> 0)
begin
update tblMember set MemberName=@Uname,Address=@Addr,Phone=@Tel where Email=@Email and MemberType=@Jurisdiction
end
else
begin
insert into tblMember (MemberType,MemberName, TrueName, Address, Phone, Email, Password) values (@Jurisdiction,@Uname, ' ',@Addr,@Tel,@Email, ' ')
end
end

/*向tblOrderDetail(定单明细表中添加信息)*/
insert into tblOrderDetail(OrderID,ProductID,Price,Number,Heji)values(@iOrderID,@ProductID,@Price,@ProductSum,@Heji)


运行后我到数据库中看,发现本来是15.2的值变成15,7.6却变成8
它进行了四舍五入

是怎么回事???


[解决办法]
看看数据表的字段类型
[解决办法]
数据类型不对.decimal(9,2)
[解决办法]
你要指定小数的位,
一般可以定义为

declare @d decimal(18,3)

------------------
SqlServer的帮助中:

decimal 和 numeric
带定点精度和小数位数的 numeric 数据类型。

decimal[(p[, s])] 和 numeric[(p[, s])]

定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。

p(精度)

指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。

s(小数位数)

指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。

精度 存储字节数
1 - 9 5
10-19 9
20-28 13
29-38 17

[解决办法]


看看数据表的字段类型

读书人网 >asp.net

热点推荐