Java数学Sqrt给出了NaN

Java数学Sqrt给出了NaN,java,android,math,Java,Android,Math,我在网站上搜索,没有发现这样的问题 我的问题是,在我的android应用程序中,当我这样做时: String ET6 = et6.getText().toString(); String ET7 = et7.getText().toString(); String ET8 = et8.getText().toString(); int IET6 = Integer.parseInt(ET6); int IET7 = Integer.parseInt(ET7); int IET8 = Intege

我在网站上搜索,没有发现这样的问题 我的问题是,在我的android应用程序中,当我这样做时:

String ET6 = et6.getText().toString();
String ET7 = et7.getText().toString();
String ET8 = et8.getText().toString();
int IET6 = Integer.parseInt(ET6);
int IET7 = Integer.parseInt(ET7);
int IET8 = Integer.parseInt(ET8);
double sqrt1 = (IET7 ^ 2) - 4 *(IET6 * IET8);
sqrt1 = Math.sqrt(sqrt1);
我得到一个NaN值 计算有什么问题

sqrt=3^2-4*2*1

sqrt=9-8

sqrt=1

那么sqrt根应该是1,这里的问题是3^2不是3²

相反,它是3XOR 2

  11 //3
 ^10 //2
 ----
  01 //1
结果是一个负数1-8=-7,它的sqrt是NaN


因此,您应该执行3*3或intMath.pow3,2,如果参数为NaN或小于零,则Math.sqrtargument的结果为NaN。源java文档

您正在使用XOR。您应该使用数学课上的pow函数:

double sqrt1 = Math.pow(IET7, 2) - 4 *(IET6 * IET8);

3^2,^在这里并没有真正执行电源操作,它是一个XORI将其更改为IET7*IET7