学习C#,数学方程未按预期得出

时间:2013-09-26 00:25:48

标签: c# math

学习C#,数学公式未达到预期效果。 这是我的功课。我不明白为什么结果不会出现,因为他们应该......

第一个等式

m=2
n=1

int sideA = (m^2) - (n^2);

结果 -3

第二个等式

x1=2
x2=7

float Xmid = (x1 + x2)/2;

结果 4

2 个答案:

答案 0 :(得分:11)

这是因为在C#中^表示XOR,而不是“提升到”的力量。要对数字求平方,请使用

Math.Pow(x, 2)

或只是

x * x

同样划分整数会截断小数部分。使用decimaldoublefloat将3.5作为3和4的中点:

float x1=2
float x2=7

float Xmid = (x1 + x2)/2;

答案 1 :(得分:4)

您的第一行代码:

int sideA = (m^2) - (n^2);

基本上是m XOR 2减去n XOR 2。 XOR是一个按位运算符,它会产生一个为真但不是两个的位。有关异或运算符的更多信息,请参阅Wikipedia。如果您尝试将m提升为 2的权力,请尝试以下操作:

int sideA = Math.Pow(m, 2) - Math.Pow(n, 2);

你的第二行代码:

float Xmid = (x1 + x2)/2;

(2 + 7)9除以整数 2是4.5,然而因为将整数除以另一个整数将始终产生一个整数,只保留结果的整数部分。您将此表达式分配给float这一事实无关紧要。

您可能想尝试:

float Xmid = (x1 + x2)/2.0;

或:

float Xmid = (x1 + x2)/2f;

x1x2声明为浮点数,两者都会产生4.5