学习C#,数学公式未达到预期效果。 这是我的功课。我不明白为什么结果不会出现,因为他们应该......
第一个等式
m=2
n=1
int sideA = (m^2) - (n^2);
结果 -3
第二个等式
x1=2
x2=7
float Xmid = (x1 + x2)/2;
结果 4
答案 0 :(得分:11)
这是因为在C#中^
表示XOR
,而不是“提升到”的力量。要对数字求平方,请使用
Math.Pow(x, 2)
或只是
x * x
同样划分整数会截断小数部分。使用decimal
,double
或float
将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;
或将x1
和x2
声明为浮点数,两者都会产生4.5
。