c# - SQL Server 'ROUND' 与 C# 'Math.Round'

标签 c# sql sql-server

我有以下 SQL Server 语句,我想将其转换为 c#。我知道 C# 中有一个叫做 Math.Round 的东西。我已经尝试过,但 C# 返回相同的结果 c# 返回一个 int。有关详细信息,请查看以下测试和结果:

SQL 服务器

Select ROUND(SUM(someValue) / 60,0)  

C#

var alpha = Math.Round(someValue / 60, 0);

测试和结果

select ROUND(150.75, 0)
-- Result = 151.00

var alpha = Math.Round(150.75, 0);
// Result = 151

谁能告诉我为什么不把 .00 放在最后。在实际值中会有任何差异。我正在寻找用 C# 替换 SQL 的方法。

谢谢

最佳答案

根据 table on MSDN here SQL Server 的 ROUND() 将为小数输入返回小数输出。

Math.Round 的重载返回 decimal 或 double,具体取决于输入类型。

您看不到 .00 的原因必须是您对结果应用的格式。

(推测,但 string.FormatDebug.Writeline 的默认格式可能在内部使用技术 such as this 检索小数位数并提供默认演示文稿),例如

int count = BitConverter.GetBytes(decimal.GetBits(Math.Round(150.75M, 0))[3])[2];

关于c# - SQL Server 'ROUND' 与 C# 'Math.Round',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010246/

相关文章:

sql-server - 使用相当于 sql IN 运算符的 linq

sql-server - 是否有 SQL Server 相当于 PostgreSQL "select * for update"而不打开游标

c# - 是否有相当于 npm 链接的 .NET(核心)版本?

c# - foreach 未知类型

使用来自 SSRS 连接的模拟所需的 SQL 数据库权限

sql-server - 使用 T-SQL 在时间序列数据中前向填充空值的有效方法

c# - 如何从 Unity 映射中删除(取消注册)已注册的实例?

c# - 文本框为空时触发事件

MySQL更新一行但单个字段

sql - 从存储过程中写出 HTML 并通过电子邮件发送