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如何保留两位小数而不四舍五入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

只保留小数点后的前两位数字,不四舍五入[重复]

要四舍五入保留一位小数,JAVA如何实现

C语言如何实现在运算过程中的四舍五入保留两位小数

要四舍五入保留一位小数,JAVA如何实现

java 两个数相除后四舍五入并保留两位小数

java中保留两位小数并要求四舍五入的方法