В настоящее время я пишу свою диссертацию, и я столкнулся с поведением .Net C #, которого я никогда раньше не видел.Я говорю об ошибке в расчете.Я реализовал эту формулу:
1/2 * (Theta i-1 + Theta i) + Sum (Alph k, k = 1, i-1)
Эта формула применяется к 4объекты.Тета во всех объектах объявлена как float со значением 1,5708.Альфа инициализируется с 0 и будет увеличиваться на каждой итерации.
Первая имплментация
float alpha = 0;
float value = 0;
for (int sphereCount = 1; sphereCount < this.spheres.Count; sphereCount++)
{
value = (1/2) * (this.spheres[sphereCount - 1].Theta + this.spheres[sphereCount].Theta);
alpha += value;
}
При этой версии значение всегда равно 0,0!Поэтому я изменил его на:
Рабочая реализация
float alpha = 0;
float value = 0;
for (int sphereCount = 1; sphereCount < this.spheres.Count; sphereCount++)
{
value =(this.spheres[sphereCount - 1].Theta + this.spheres[sphereCount].Theta) * 1/2;
alpha += value;
}
Сняв скобки вокруг 1/2 и поместив его в конце расчета, это сработало.
ПОЧЕМУ ЭТО ТАК ???
Кажется, когда вы помещаете 1/2 в скобки, независимо от положения 1/2, результат равен 0,0.Но также, когда я помещаю (1/2) в конце, это приводит к 0.0.У кого-нибудь здесь есть идея, почему?