T-SQL如何保留两位小数而不四舍五入[重复]
Posted
技术标签:
【中文标题】T-SQL如何保留两位小数而不四舍五入[重复]【英文标题】:T-SQL How to leave two decimals without rounding [duplicate] 【发布时间】:2013-10-09 20:59:40 【问题描述】:我使用的是 SQL Server 2008。
在从 .NET 网站检索数据后,我试图留下数字而不进行四舍五入。
比如我从网站上得到的号码是10.7658234
我想将数字保留为10.76
,而不是四舍五入为10.77
。
目前,SQL Server 中的数据类型为numeric(11,2)
。
我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:如果您需要在 SQL 中截断,ROUND
有一个可选的第三个参数,您可以使用它来截断而不是舍入:
SELECT ROUND(10.7658234,2,1) -- 10.76
如果您需要在 SQL 之前截断 (例如,如果数字作为具有 2 位精度的命令参数传递),则需要更改设置参数的代码进行截断。由于您没有指定 如何,这是在通用 C# 代码中完成的方式:
double val = 10.7658234;
val = Math.Truncate(val * 100) / 100;
【讨论】:
但目前,存储过程只是将数据带入参数:@Number(11,2) 并更新到 SQL 中的表中。例如: UPDATE tblMisc SET tblMsic.nNumber = @Number 我在哪里放 Round(x, 2,1)? @Kudohs 那么它需要在应用程序中进行更改。请参阅我的更新答案。 @Kudohs 我还会修改您的问题以指定它,以便它可以作为非重复问题重新打开。 为什么选择@DStanley?如果您假设截断是在 SQL 而不是 C# 中完成的,则可以在更新语句中完成... ROUND(@NUMBER,2,1) @Ben 注释显示参数类型为Numeric(11,2)
,因此在到达 UPDATE 之前将四舍五入为 2 位。因此,除非有办法改变我不知道的行为,否则它需要在应用层进行更改。以上是关于T-SQL如何保留两位小数而不四舍五入[重复]的主要内容,如果未能解决你的问题,请参考以下文章