Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 为什么在SQL Server十进制类型中对每个十进制结果进行取整?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 为什么在SQL Server十进制类型中对每个十进制结果进行取整?

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,并且您没有指定一个值来覆盖该值 看 要修复:

我有这个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(18,5)
这将在小数点后存储5位数字


基本上,这里有一个整数类型。

很好,现在它在SQL端工作。但当我运行VB.net应用程序时,该值仍然是1(而不是0,61)。为什么?我是否需要在源代码中指定精度?怎么用?我使用SqlDbType.Decimal作为类型。我不能对看不见的代码进行注释。如果您指的是在命令对象上设置参数类型,那么是的,您还需要在其中指定精度和比例。请参见[了解更多信息(对于SqlClient参数类型也是如此),然后参见和。这两个对应于我示例中的18和5。