这是我的一段代码,它每秒调用一次,大约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],但这不应该保留???
若B == -0.001219512195122,那么A/B = = 41,且a + b == - 0.051219512195122 -这样的东西围绕这些地区(四舍五入等)听起来是可行的......
也; 请注意,对于某些算术,可能使用仍在寄存器中的值.寄存器可能表现出与局部变量略有不同的准确度(因此给出不同的结果).
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |