C#是否存在划分问题?

Tom*_*Tom 0 c#

这是我的一段代码,它每秒调用一次,大约10秒钟后,值开始变得怪异(见下文):

double a;
double b;

for (int i = 0; i < currAC.Length; i++ )
{                 
    a = currAC[i];
    b = aveACValues[i];
    divisor = (a/b);
    Console.WriteLine("a = " + a.ToString("N2") + "\t" + "b = " + b.ToString("N2"));
    Console.WriteLine("divisor = " + divisor);
    Console.WriteLine("a+b = " + (a+b));
}
Run Code Online (Sandbox Code Playgroud)

和输出:

a = -0.05 b = 0.00

除数= 41

a + b = -0.0524010372273268

currAC和aveACValues是双倍的[]

到底是怎么回事?每次添加结果都是正确的,但除法值是错误的,但它正确读取a和b?

编辑:'41'是第一次计算的值,即a = currAC [0],但这不应该保留???

Mar*_*ell 5

若B == -0.001219512195122,那么A/B = = 41,且a + b == - 0.051219512195122 -这样的东西围绕这些地区(四舍五入等)听起来是可行的......

也; 请注意,对于某些算术,可能使用仍在寄存器中的值.寄存器可能表现出与局部变量略有不同的准确度(因此给出不同的结果).