sql-server-2005 - 为什么在 SQL Server Decimal 类型中对每个小数结果进行舍入?

标签 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,并且您没有指定一个值来覆盖它。

参见the MSDN documentation here .

修复:

declare @dcml decimal(18,5)

这将存储小数点后 5 位数字。

基本上你有一个整数类型。

关于sql-server-2005 - 为什么在 SQL Server Decimal 类型中对每个小数结果进行舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17279279/

相关文章:

c# - 无需备份权限即可远程备份 SQL Server 数据库

sql - 基于以前的值更新 SQL SERVER 2005

sql-server-2005 - 存储过程的版本更改

java - 如何使用java执行t-sql脚本?

c# - 有关 sql server 存储印地文 mangal devnagari 字体的问题。当我尝试插入值时它显示方框

sql - 如何将表值从一个数据库插入到另一个数据库?

sql-server - 为什么在 SQL Server 中使用游标被认为是不好的做法?

SQL Server 2005 'between' 运算符(operator)行为 - bug 还是功能?

sql - 如何从包含自引用外键的表中删除数据

sql - 逗号分隔的 SQL 字符串 需要分隔