【问题标题】:T-SQL How to leave two decimals without rounding [duplicate]T-SQL如何保留两位小数而不四舍五入[重复]
【发布时间】:2013-10-09 20:59:40
【问题描述】:

我使用的是 SQL Server 2008。

在从 .NET 网站检索数据后,我试图留下数字而不进行四舍五入。

比如我从网站上得到的号码是10.7658234

我想将数字保留为10.76,而不是四舍五入为10.77。

目前,SQL Server 中的数据类型为numeric(11,2)。

我该怎么做?

谢谢。

【问题讨论】:

    标签: sql sql-server-2008 tsql


    【解决方案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 位。因此,除非有办法改变我不知道的行为,否则它需要在应用层进行更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多