【发布时间】:2011-12-21 16:56:26
【问题描述】:
我有一个计算值为 -1407.858 的应用程序;其 C# 数据类型是 decimal。
数据库中的列数据类型为十进制(12,2)。我会认为它会舍入该值并插入 -1407.86(这将满足从零舍入和均匀舍入的情况)。
不幸的是,该值被插入为 -1407.85。我能想到的唯一解释是最后一位数字被截断了。
我在 SQL Server 中做了一些简单的测试查询,例如:
declare @first AS decimal(12,2)
declare @second AS float --[or decimal(12,3)]
set @second = -1407.858
set @first=@second
select @first;
我返回 -1407.86,所以我想 SQL Server 在设置值时会自动舍入值,但在插入时不会。它是否正确? SQL Server是不是只有插入时截断,设置时舍入?
【问题讨论】:
-
这里有什么问题?
-
是的,当您将值放入具有两位小数的变量时,它会将值四舍五入到两位小数。
-
@Harry 问题是......? :)
-
@Harry,你是如何插入这个值的?你使用的是 linq2sql、ef 还是任何数据框架?
-
不要打扰它,在插入之前对结果使用 ROUND 函数。这样您就可以使用您选择的方法显式舍入。
标签: c# sql sql-server