現在、私は自分の論文を書いており、これまでに見たことのない.NET C#の動作に直面していました。私は計算のエラーについて話しています。 Iは次の式を実装:なぜこの結果は0であり、upsidedownではありませんか?
1/2 *(シータI-1 +シータI)+合計(= 1、I-1 ALPH kを、k)は、この式は、4つのオブジェクトに適用されます。 Thetaは浮動小数点として宣言されたすべてのオブジェクトの値が1,5708です。アルファは0で初期化され、繰り返しごとに増加します。
このバージョンの値を持つ最初のimplmentation
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であります! だから私はそれを変更:1/2の周りに括弧を削除し、それが働いた計算の最後にそれを配置することによりimplementaion
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の位置に依存しない場合、結果は0.0です。しかし、私が最後に(1/2)を置くと0.0になります。 ここに誰も理由がありますか?
:
なぜこれを書いていませんか?私はこれが浮動小数点質問だと思う。試してみてください。Console.Out.WriteLine(value); ' –
質問には関係ありませんが、最後の球はどちらにも含まれていません、それは意図的ですか? – harold
@ChrisShain:デバッガを使用しました;-)コンソール出力は不要です。 – Christoph