首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java Math Sqrt提供了NaN

Java Math Sqrt提供了NaN
EN

Stack Overflow用户
提问于 2016-04-27 21:10:31
回答 3查看 1.5K关注 0票数 0

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

代码语言:javascript
运行
复制
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

EN

回答 3

Stack Overflow用户

发布于 2016-04-27 21:12:42

这里的问题是3^2不是

取而代之的是3XOR2。

代码语言:javascript
运行
复制
  11 //3
 ^10 //2
 ----
  01 //1

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

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

票数 7
EN

Stack Overflow用户

发布于 2016-04-27 21:15:01

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

票数 2
EN

Stack Overflow用户

发布于 2016-04-27 21:15:27

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

代码语言:javascript
运行
复制
double sqrt1 = Math.pow(IET7, 2) - 4 *(IET6 * IET8);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36890834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档