SELECT 9.9999 * 1.0241030 * 20 * 12.00 * 12.00 * 12.00
GO DECLARE @DISCOUNT DECIMAL(18,4)
set @DISCOUNT = 9.9999 DECLARE @StoragePrice DECIMAL(18,6)
SET @StoragePrice = 1.024103 DECLARE @Quantity int
set @Quantity = 20 DECLARE @Height DECIMAL(18,2)
SET @Height = 12.00 DECLARE @Width DECIMAL(18,2)
SET @Width = 12.00 DECLARE @Length DECIMAL(18,2)
SET @Length = 12.00 SELECT @DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice
SELECT SQL_VARIANT_PROPERTY(@DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice,'Precision')
SELECT SQL_VARIANT_PROPERTY(@DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice,'Scale')运行一下,你就知道为什么了。
SELECT CONVERT(DECIMAL(23,17),@DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice)要一样,只有显示指定转换精度值,变量精度计算在帮助上有说明了。
go
/*
--------------------
353926.457500(所影响的行数为 1 行)
*/DECLARE @DISCOUNT DECIMAL(18,4)
set @DISCOUNT = 9.9999 DECLARE @StoragePrice DECIMAL(18,6)
SET @StoragePrice = 1.024103 DECLARE @Quantity int
set @Quantity = 20 DECLARE @Height DECIMAL(18,2)
SET @Height = 12.00 DECLARE @Width DECIMAL(18,2)
SET @Width = 12.00 DECLARE @Length DECIMAL(18,2)
SET @Length = 12.00 SELECT @DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice/*
----------------------------------------
353926.457500(所影响的行数为 1 行)
*/
GO DECLARE @DISCOUNT DECIMAL(9,4)
set @DISCOUNT = 9.9999 DECLARE @StoragePrice DECIMAL(7,6)
SET @StoragePrice = 1.024103 DECLARE @Quantity int
set @Quantity = 20 DECLARE @Height DECIMAL(4,2)
SET @Height = 12.00 DECLARE @Width DECIMAL(4,2)
SET @Width = 12.00 DECLARE @Length DECIMAL(4,2)
SET @Length = 12.00 SELECT @DISCOUNT * @Quantity * @Height * @Width * @Length * @StoragePrice
select 222*256*256*256 +187*256*256 + 255*256 + 255消息 8115,级别 16,状态 2,第 1 行
将 expression 转换为数据类型 int 时出现算术溢出错误。declare @ip1 bigint
declare @a1 bigint
declare @a2 bigint
declare @a3 bigint
declare @a4 bigint
set @a1=222
set @a2=187
set @a3=255
set @a4=255
select @ip1 =@a1*256*256*256 + @a2*256*256 + @a3*256 + @a4
print @ip13736862719