Java Math Sqrt给出了NaN

时间:2016-04-27 13:10:31

标签: 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 = 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 个答案:

答案 0 :(得分:7)

此处的问题是3^2不是

相反,它是3 XOR 2。

  11 //3
 ^10 //2
 ----
  01 //1

所以结果是负数(1-8 = -7),其中的sqrt是NaN。

因此,您应该3*3(int)Math.pow(3,2)

答案 1 :(得分:2)

如果参数为NaN或小于零,则Math.sqrt(参数)的结果为NaN。源java文档link

答案 2 :(得分:1)

您正在使用XOR。你应该使用Math类的pow函数:

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