2

学习 C#,数学方程未按预期产生。这是我家庭作业的一部分。我不明白为什么结果没有像他们应该的那样出来..

第一个方程

m=2
n=1

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

结果-3

第二个方程

x1=2
x2=7

float Xmid = (x1 + x2)/2;

结果4

4

2 回答 2

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;
于 2013-09-26T00:27:47.673 回答
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除以整数 24.5,但是因为一个整数除以另一个整数总是会得到一个整数,所以只保留结果的整数部分。您将此表达式分配给 a 的事实float是无关紧要的。

您可能想尝试:

float Xmid = (x1 + x2)/2.0;

或者:

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

x1将and声明x2为浮点数,两者都会产生4.5.

于 2013-09-26T00:31:08.167 回答