我对为什么调用 Math.Round 方法会引发“歧义调用”编译器错误感到有些困惑。
这是我的违规代码:
Math.Round((2000-((Splots[x].RawMin/4095)*2000))+200);
RawMin 是 Int32 数据类型。
我想,Round 方法应该返回 Int32 值类型。
任何提示或线索将不胜感激。谢谢,
我对为什么调用 Math.Round 方法会引发“歧义调用”编译器错误感到有些困惑。
这是我的违规代码:
Math.Round((2000-((Splots[x].RawMin/4095)*2000))+200);
RawMin 是 Int32 数据类型。
我想,Round 方法应该返回 Int32 值类型。
任何提示或线索将不胜感激。谢谢,
查看 的重载列表Math.Round
。有两种方法采用单个参数:
double Round(double d)
decimal Round(decimal d)
两者都在使用int
参数调用时适用 - 但是当您只有一个int
开始时调用该方法是没有意义的,因为它已经四舍五入了。
我怀疑你实际上想改变你做算术的方式,例如通过在double
算术中执行除法运算,然后传播到其他操作:
// Note the 4095.0 to make it a double
Math.Round((2000-((Splots[x].RawMin/4095.0)*2000))+200);
没有它,所有的操作都使用整数算术,这几乎肯定不是你想要的。
您仍然需要将结果转换为int
。的范围double
超过了int
和的范围long
,这就是返回类型为的Math.Round(double)
原因double
。在这种情况下,您“知道”结果将在适当的范围内,但给定计算。