所以我有一段很好的复杂的 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));
产生相同的结果。
这是怎么回事?