これで、数式への代入を処理する複雑な C# コードができました。ほぼ完璧に機能しています。ただし、方程式(x - y + 1) / z
と値が与えられるとx=2
y=0
z=5
、惨めにそして不可解に失敗します。
問題は、値が関数に間違って渡されることではありません。それはいいです。問題は、使用する型に関係なく、C# が 3/5=0 と見なしているように見えることです。
問題のコードは次のとおりです。
public static void TrapRule(string[] args)
{
// ...
string equation = args[0];
int ordinates = Convert.ToInt32(args[1]);
int startX = Convert.ToInt32(args[2]);
int endX = Convert.ToInt32(args[3]);
double difference = (endX - startX + 1) / ordinates;
// ...
}
次のように渡さargs
れます。
args[0] = Pow(6,[x])
args[1] = 5
args[2] = 0
args[3] = 2
(ちなみに、NCalcを使用すると、Pow()
関数はそれによって評価されます-これは正常に機能します。)
結果?difference = 0
.
float
を使用するときと、簡単な計算を試みるときに同じことが起こります。
Console.Write((3 / 5));
同じ結果になります。
どうしたの?