我在网站上搜索,没有发现这样的问题。我的问题是,当我这样做时,在我的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 root应为1
发布于 2016-04-27 21:12:42
这里的问题是3^2
不是3²
。
取而代之的是3XOR2。
11 //3
^10 //2
----
01 //1
所以结果是一个负数(1-8 = -7),其中的sqrt是NaN。
因此,您应该使用3*3
或(int)Math.pow(3,2)
发布于 2016-04-27 21:15:01
如果参数为NaN或小于零,则Math.sqrt(参数)的结果为NaN。源java文档link
发布于 2016-04-27 21:15:27
您正在使用XOR。您应该使用Math类中的pow函数:
double sqrt1 = Math.pow(IET7, 2) - 4 *(IET6 * IET8);
https://stackoverflow.com/questions/36890834
复制相似问题