学习 C#,数学方程未按预期产生。这是我家庭作业的一部分。我不明白为什么结果没有像他们应该的那样出来..
第一个方程
m=2
n=1
int sideA = (m^2) - (n^2);
结果-3
第二个方程
x1=2
x2=7
float Xmid = (x1 + x2)/2;
结果4
这是因为在 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;
您的第一行代码:
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,但是因为一个整数除以另一个整数总是会得到一个整数,所以只保留结果的整数部分。您将此表达式分配给 a 的事实float
是无关紧要的。
您可能想尝试:
float Xmid = (x1 + x2)/2.0;
或者:
float Xmid = (x1 + x2)/2f;
或x1
将and声明x2
为浮点数,两者都会产生4.5
.