Sql server 2005 为什么在SQL Server十进制类型中对每个十进制结果进行取整?
我有这个TSQL脚本:Sql server 2005 为什么在SQL Server十进制类型中对每个十进制结果进行取整?,sql-server-2005,Sql Server 2005,我有这个TSQL脚本: declare @dcml decimal declare @flt float SELECT @dcml = 5/cast(4 AS float) PRINT(@dcml) -- return 1 SELECT @flt = 5/cast(4 AS float) PRINT(@flt) -- return 1.25 为什么在第一种情况下,即使结果使用十进制容器,结果也会四舍五入?因为默认情况下,小数点后存储的位数为0,并且您没有指定一个值来覆盖该值 看 要修复:
declare @dcml decimal
declare @flt float
SELECT @dcml = 5/cast(4 AS float)
PRINT(@dcml) -- return 1
SELECT @flt = 5/cast(4 AS float)
PRINT(@flt) -- return 1.25
为什么在第一种情况下,即使结果使用十进制容器,结果也会四舍五入?因为默认情况下,小数点后存储的位数为0,并且您没有指定一个值来覆盖该值 看 要修复:
declare @dcml decimal(18,5)
这将在小数点后存储5位数字
基本上,这里有一个整数类型。很好,现在它在SQL端工作。但当我运行VB.net应用程序时,该值仍然是1(而不是0,61)。为什么?我是否需要在源代码中指定精度?怎么用?我使用SqlDbType.Decimal作为类型。我不能对看不见的代码进行注释。如果您指的是在命令对象上设置参数类型,那么是的,您还需要在其中指定精度和比例。请参见[了解更多信息(对于SqlClient参数类型也是如此),然后参见和。这两个对应于我示例中的18和5。