我有以下SQL Server
语句,我想将其转换为c#
。我知道Math.Round
中有一些名为C#
的内容。我试过但C#
返回相同的结果c#返回一个int。有关详细信息,请查看测试&结果如下:
SQL SERVER
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。
由于
答案 0 :(得分:4)
根据table on MSDN here Sql Server的ROUND()
将返回小数输入的十进制输出。
Math.Round
的重载返回十进制或双精度,具体取决于输入类型。
因此,您没有看到.00
的原因必须是您应用于结果的格式。
(推测,但string.Format
或Debug.Writeline
上的默认格式可能在内部使用技术such as this来检索小数位数并提供默认演示文稿),例如
int count = BitConverter.GetBytes(decimal.GetBits(Math.Round(150.75M, 0))[3])[2];
答案 1 :(得分:1)
SQL为您提供了相同的数据类型 - 在SQL中有十进制数据类型的精度设置,因为您指定的数字为2dp,SQL返回的值为2dp。
.NET不与SQL共享相同的数据类型,因此返回double
(因为您没有将输入指定为十进制)