111,120
社区成员
发帖
与我相关
我的任务
分享

我也测试了一下,证明楼主说的这几个数是能得到正确结果的。
我推测可能是引用的C++库中存在了Math.Round这样的函数,导致在调用的时候错误调用了C++库里的这个函数,那他这个函数是干嘛用的就不知道了。
楼主尝试下指明具体的数据类型,就是明确调用方法,如Math.Round(0.553m,2);
不行的话就连命名空间都指明:System.Math.Round(0553m,2);
System.Math在mscorlib.dll中,
Math.Round(double,int)的源码
public static double Round(double value, int digits)
{
if (digits < 0 || digits > 15)
{
throw new ArgumentOutOfRangeException("digits", Environment.GetResourceString("ArgumentOutOfRange_RoundingDigits"));
}
return Math.InternalRound(value, digits, MidpointRounding.ToEven);
}
private unsafe static double InternalRound(double value, int digits, MidpointRounding mode)
{
if (Math.Abs(value) < Math.doubleRoundLimit)
{
double num = Math.roundPower10Double[digits];
value *= num;
if (mode == MidpointRounding.AwayFromZero)
{
double value2 = Math.SplitFractionDouble(&value);
if (Math.Abs(value2) >= 0.5)
{
value += (double)Math.Sign(value2);
}
}
else
{
value = Math.Round(value);
}
value /= num;
}
return value;
}
调用c++库之后的统计图

