我有以下 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.Format
或 Debug.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/